ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 3157
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎wd泰pgiu克y新g闻j网de版权所有,请勿未授权转载!!!
虎vfd泰_aol克n_c新oi_tb闻t网por版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎eqrw泰ezlv克b新ixg闻xjz网dwo版权所有,请勿未授权转载!!!
虎rihqf泰uynw克ak新ugnmd闻xj网sdfim版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎ya_la泰x克_igw新bevfv闻pomem网kd版权所有,请勿未授权转载!!!
虎at泰xvpb克csyru新pp_闻wvs网su版权所有,请勿未授权转载!!!
a.php
虎mxe泰gx克kcqmi新wndwe闻hydop网svhhj版权所有,请勿未授权转载!!!
class a{
虎juad泰dee克dplf新ctwh闻e网ikv版权所有,请勿未授权转载!!!
function __construct(){
虎rideu泰_克bb新nh闻jt网hkr版权所有,请勿未授权转载!!!
echo 'a';
虎vwz泰gtg克e新xv闻yrxax网asnt版权所有,请勿未授权转载!!!
}
虎tz泰py克oco新ue_o闻sdw_网rf_y版权所有,请勿未授权转载!!!
}
虎zscr泰e克fg新kwk闻csvye网ox_a版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎ztlm泰yj_k克pbki新hwde闻pxm网i版权所有,请勿未授权转载!!!
include 'a.php';
虎xkqko泰s克csjb新bqrbl闻icp网q版权所有,请勿未授权转载!!!
class b extends a{
虎zonlf泰bs克tbcy新h闻rzlh网v_xm版权所有,请勿未授权转载!!!
function __construct(){
虎m泰tzf克djlxv新gmcw闻y网ko版权所有,请勿未授权转载!!!
echo 'b';
虎zuh_泰aedwr克ba新jp闻yhvr网n版权所有,请勿未授权转载!!!
}
虎bvl_泰u_x克aif新ptf闻gzbwo网bpsmc版权所有,请勿未授权转载!!!
}
虎sj泰bzeoe克lxqs_新lid_闻nv_网o版权所有,请勿未授权转载!!!
虎mb泰h_it克lq新pdk闻fuxp网l版权所有,请勿未授权转载!!!
$test=new b();
虎v泰rst克qks新xjs闻o网zrv版权所有,请勿未授权转载!!!
运行结果:
虎o泰_ix克ndi新mznug闻m网iwu版权所有,请勿未授权转载!!!
b
虎nkuly泰zuhxl克vau新wt_k闻ol网q版权所有,请勿未授权转载!!!
虎yot_x泰n克bhmnk新dwsbo闻w网jwv版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎p泰hc克jypf新tv闻fyos网uvvh版权所有,请勿未授权转载!!!
虎uhay泰raprj克qd新fp闻pinm网p版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎xj泰z克v新r闻pudsf网c版权所有,请勿未授权转载!!!
include 'a.php';
虎q泰eph克mmzb新tii_闻wv网b版权所有,请勿未授权转载!!!
class b extends a{
虎oy泰ka克wnbu新zecz闻klki网vjbto版权所有,请勿未授权转载!!!
function __construct(){
虎u泰ds克hh新z闻wv网zso版权所有,请勿未授权转载!!!
parent::__construct();
虎qpsr_泰vbxf克axlk新e_he闻lakbc网lxg版权所有,请勿未授权转载!!!
echo 'b';
虎e泰nv克qkfo新yosym闻ez网u版权所有,请勿未授权转载!!!
}
虎f泰afxyb克zwrsg新ct闻swsj_网sy版权所有,请勿未授权转载!!!
}
虎n泰v克tgn新_闻wqtdv网m版权所有,请勿未授权转载!!!
虎psje泰c克r新j闻guza网fjb版权所有,请勿未授权转载!!!
$test=new b();
虎h泰mwj克oo新dxjjj闻yzf_u网e版权所有,请勿未授权转载!!!
那么输出结果是:
虎zmk泰xjw克r新csb闻h_网eshr版权所有,请勿未授权转载!!!
ab
虎q泰o克bp新yd闻eit_d网_zfma版权所有,请勿未授权转载!!!
虎kdw泰y克wkt新hrbh闻yvoy网gppt版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎gowj泰nswpk克swe新aty闻uql网ubdf版权所有,请勿未授权转载!!!
虎h泰vzw克avg新zgfey闻dwqcb网sgacu版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎qpop泰f克l新mpc闻xsi网ro版权所有,请勿未授权转载!!!
虎dubh泰nudfh克ezviu新kb闻tgkp网zwz版权所有,请勿未授权转载!!!
BaseAction.class.php
虎po_rl泰mqqfa克tbeup新zcvx闻omwrx网n版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎sejuk泰lci克gr新q_闻nsan网erea版权所有,请勿未授权转载!!!
public function _initialize(){
虎ytp_泰i克c新beipf闻s网ljum版权所有,请勿未授权转载!!!
echo 'baseAction';
虎crdh泰luooc克fmf新m_qm闻wpn网cizhd版权所有,请勿未授权转载!!!
}
虎xwes泰t克y新vfuxx闻ffde网wpki版权所有,请勿未授权转载!!!
}
虎luf泰_rn克z新g_x闻zfauz网wmpx版权所有,请勿未授权转载!!!
虎wjr泰l克ovf新uwhbx闻ytajw网zng版权所有,请勿未授权转载!!!
IndexAction.class.php
虎mx泰u克g新r_r闻she网cty版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎ru泰dfj克chp新xop闻qxpxo网np版权所有,请勿未授权转载!!!
public function (){
虎bsd泰ksqrm克nudn新y_闻u网p版权所有,请勿未授权转载!!!
echo 'indexAction';
虎yexhq泰iu_克rbv新uj闻id网x版权所有,请勿未授权转载!!!
}
虎taqs泰mdmvm克qeg新fwob闻cab网fpk版权所有,请勿未授权转载!!!
}
虎mnne泰jxg克xy新nmqt闻m网qi版权所有,请勿未授权转载!!!
虎yux_s泰xb克dr_m新kgcz闻ofyu_网pphl版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎x泰cih克irkg新q闻bnog网duoi版权所有,请勿未授权转载!!!
baseActionindexAcition
虎cyxct泰vy克pt新oefhl闻dj网xuj版权所有,请勿未授权转载!!!
虎d泰zztp克wr新dcodb闻x网th版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎hx泰sor克ttlmt新bt闻pvc网yk版权所有,请勿未授权转载!!!
虎mgye泰f克agwg新io_ew闻wb网v版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎xtzhv泰s克ueat新cg闻_ht网jw版权所有,请勿未授权转载!!!
заявление: все рукописи и диаграммы, которые перевернулись, для того, чтобы получить больше информации и удобного изучения, не означают, что станция и организатор, организатор и спонсор согласны с их взглядами или подтверждают их подлинность, содержание статьи только для справки, если нарушение прав автора обратитесь к администратору сайта.
Список комментариев
-
Пока нет данных