ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 4011
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎asmuh泰z克bu_新isji闻s_ep网lkybs版权所有,请勿未授权转载!!!
虎rvsf泰ewl克pz新kcb闻fts网zlrk版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎bcmh泰oaxrz克yqu_新df闻w网z版权所有,请勿未授权转载!!!
虎jugfv泰xbw克wr新k闻bmn网z版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎qerra泰uf克ur新jq闻iboiy网u版权所有,请勿未授权转载!!!
虎qe泰feg克c新zwq闻mqbog网ye版权所有,请勿未授权转载!!!
a.php
虎gs_ac泰ss克k新mkmm_闻jnty网qi_u版权所有,请勿未授权转载!!!
class a{
虎p泰cbxxe克ou新sd_pz闻ujf网may版权所有,请勿未授权转载!!!
function __construct(){
虎br泰tye克dt_pi新_闻uywqj网mny版权所有,请勿未授权转载!!!
echo 'a';
虎enj泰ttt克b新njyrp闻fxp网_版权所有,请勿未授权转载!!!
}
虎r泰wmini克uiqg新rq闻a_xp网kv版权所有,请勿未授权转载!!!
}
虎qk泰hri克ess新rapjx闻e网_aw版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎it泰rxw_克f新hj闻hrym网f版权所有,请勿未授权转载!!!
include 'a.php';
虎r泰p克hwy新ttuez闻opgm网j版权所有,请勿未授权转载!!!
class b extends a{
虎xotkd泰v克qzi新ypu闻mtlw网zfooe版权所有,请勿未授权转载!!!
function __construct(){
虎xfu泰x克mcl新ywe闻nzgre网ge版权所有,请勿未授权转载!!!
echo 'b';
虎di泰hii克dks新nepwu闻vi网uaheq版权所有,请勿未授权转载!!!
}
虎dc泰bv克ger新gjn闻rc网pt版权所有,请勿未授权转载!!!
}
虎p泰ebsa克ij新ns闻ntw网jex版权所有,请勿未授权转载!!!
虎qfgqy泰w克xwxco新sigm闻ktgvf网hpcl版权所有,请勿未授权转载!!!
$test=new b();
虎om泰ceky克f新tvwt闻uj网mb版权所有,请勿未授权转载!!!
运行结果:
虎zcvg泰iwpk克nh新_s闻os_oz网ywrl版权所有,请勿未授权转载!!!
b
虎pzvdm泰q克iyoo新ogu闻oqca网kmz版权所有,请勿未授权转载!!!
虎mhyd泰fschw克vzle新zdk闻ued网fmwub版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎qng泰lelnh克ahu新rs闻m网nmf版权所有,请勿未授权转载!!!
虎a泰y克hmou新jmgl闻zcrv网xxp版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎iwuyb泰cogo克gdi新dobse闻vnwh网gpn版权所有,请勿未授权转载!!!
include 'a.php';
虎rfyzd泰eys克_syzg新qc闻pyf网yxz版权所有,请勿未授权转载!!!
class b extends a{
虎t泰x克nzay新e闻quduy网ayzxi版权所有,请勿未授权转载!!!
function __construct(){
虎bby泰vvd克m新mi闻d网fmonk版权所有,请勿未授权转载!!!
parent::__construct();
虎mjz泰wf克micnz新pfgk闻pswjq网wypuw版权所有,请勿未授权转载!!!
echo 'b';
虎e泰ssng克kfod新rw闻ptlu网fos版权所有,请勿未授权转载!!!
}
虎df泰qgvf克ribx新xwga闻r_vbj网kdh版权所有,请勿未授权转载!!!
}
虎qcnu泰vq克y新mr闻rsfp网q版权所有,请勿未授权转载!!!
虎pd泰bc克ybsjj新g闻glb网owomp版权所有,请勿未授权转载!!!
$test=new b();
虎qyhvj泰lpbo克rzd新mas闻un网edor版权所有,请勿未授权转载!!!
那么输出结果是:
虎uclh泰hd克pyoii新yxqm闻myi网wim版权所有,请勿未授权转载!!!
ab
虎heb泰dk克jw新l闻bvf网reny版权所有,请勿未授权转载!!!
虎jvbdy泰zq克ql新u闻ih网lraml版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎xtl泰davrg克i新yhqzi闻l_f网o版权所有,请勿未授权转载!!!
虎oouqh泰xy克u新h闻avlbl网_版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎kins泰kqt克_ket新wvhr闻foik网jj版权所有,请勿未授权转载!!!
虎lt泰e克bvq新nc闻cbzkf网lpby版权所有,请勿未授权转载!!!
BaseAction.class.php
虎orjll泰rhb克n新wtwow闻yzbvd网lxp_版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎zln泰n克sqqm新tr闻ep网tgr版权所有,请勿未授权转载!!!
public function _initialize(){
虎dgrlq泰stxfx克ku新fb闻yyidg网fnlw版权所有,请勿未授权转载!!!
echo 'baseAction';
虎vkbt泰ayz克ans新e闻vxfk网zamf版权所有,请勿未授权转载!!!
}
虎gpm泰glhz克tzfy新gyss闻adhs网vqc_r版权所有,请勿未授权转载!!!
}
虎l泰b克euog新qyr闻zfz网iyfwy版权所有,请勿未授权转载!!!
虎uohk泰_da克vj新bjahv闻v_网ll版权所有,请勿未授权转载!!!
IndexAction.class.php
虎met泰bfqet克schj新tns闻ph网uhpgv版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎yswi泰ylimx克o_x新afbv闻xl网so版权所有,请勿未授权转载!!!
public function (){
虎hgjo泰lm克yo新djna闻etb网my版权所有,请勿未授权转载!!!
echo 'indexAction';
虎dchva泰wbw克cpu新_pb闻lx网ifp版权所有,请勿未授权转载!!!
}
虎ic泰qiny克slzax新q闻mrr网rq_w版权所有,请勿未授权转载!!!
}
虎x泰psdb克xhu新xpknp闻p网l版权所有,请勿未授权转载!!!
虎lz泰aylrv克_dnbw新cmw闻s网bhsla版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎uzsd泰wn克sk新wdgf闻nc网_版权所有,请勿未授权转载!!!
baseActionindexAcition
虎uzuu泰cqn_v克pfyy新ms闻z网m版权所有,请勿未授权转载!!!
虎_p泰g克x新tyets闻j网jofpt版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎lve泰akeir克x新ytst闻vdxp网jhjdk版权所有,请勿未授权转载!!!
虎gcrjh泰kyf克xdx新o闻ilr网fsz版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎sib泰mgv克bkk新da闻lsa网eqfut版权所有,请勿未授权转载!!!
Déclaration: le fait que des articles tels que les textes et les graphiques reproduits sur le site Web ne signifie pas que la station et les organisateurs partagent leur point de vue ou confirment l 'authenticité de leur contenu ne signifie pas qu' ils ont pour objet de communiquer des informations supplémentaires et de faciliter la discussion.
Liste des commentaires
-
Données non disponibles