ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 1992
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎uu泰hxql克a新a闻tgfax网fsgqm版权所有,请勿未授权转载!!!
虎hrfmo泰uw克vezp新ekkl闻iz网fmj版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎ppy泰y克mt_fs新yquj闻orjx网tewe版权所有,请勿未授权转载!!!
虎ven_q泰wb克qbim新xpt闻nd网vy版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎gakw泰mz克gegyq新p闻mumra网j版权所有,请勿未授权转载!!!
虎ut泰fc克fu新m闻hpud网tgrm版权所有,请勿未授权转载!!!
a.php
虎tl泰pevv克runfj新l闻had网aokts版权所有,请勿未授权转载!!!
class a{
虎syum泰irfi克f新j闻yfa网i版权所有,请勿未授权转载!!!
function __construct(){
虎fg泰gize克xo新mpud闻i网rcuc版权所有,请勿未授权转载!!!
echo 'a';
虎tkwr泰bnyco克yfhtp新ubhic闻bden网co版权所有,请勿未授权转载!!!
}
虎m泰kh克q新p闻tyu网lfzc版权所有,请勿未授权转载!!!
}
虎nikwu泰li克gtjsd新fdnhn闻vw网df版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎_oli泰tef克ikvqk新pqaf闻v网_xqfm版权所有,请勿未授权转载!!!
include 'a.php';
虎_jqek泰vb克jrk新vxu闻jdsfi网opt版权所有,请勿未授权转载!!!
class b extends a{
虎nmq泰koi克gtj新ekx闻ya_网fimpq版权所有,请勿未授权转载!!!
function __construct(){
虎xqge泰egzcx克z新xyv闻ltyog网sss版权所有,请勿未授权转载!!!
echo 'b';
虎tuj泰jsuu克uc新gv闻vnp网a版权所有,请勿未授权转载!!!
}
虎tu_泰vgxkw克j新rrl闻xzk网hm版权所有,请勿未授权转载!!!
}
虎c_il泰kaoup克hgnot新u闻utxgx网w版权所有,请勿未授权转载!!!
虎bowfe泰h克gma新_闻cl网p版权所有,请勿未授权转载!!!
$test=new b();
虎e泰vg克cbad新sbbk闻teutv网lblvf版权所有,请勿未授权转载!!!
运行结果:
虎hwvdf泰z克beb新lljam闻pwxgl网ml_版权所有,请勿未授权转载!!!
b
虎u泰_ou克pnzz新bu闻f网r版权所有,请勿未授权转载!!!
虎e泰ar克spg新jv闻ghi网e版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎mrmjt泰pb克hjbw新yna闻yi网tkih版权所有,请勿未授权转载!!!
虎b泰sa克m新qc闻n网e版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎laliv泰ak克jjs新gj闻yr网g_版权所有,请勿未授权转载!!!
include 'a.php';
虎spzih泰lsof克iren新nmjy闻zzl网mvree版权所有,请勿未授权转载!!!
class b extends a{
虎wksa泰osy克el_新x闻ovz网eo版权所有,请勿未授权转载!!!
function __construct(){
虎rft泰yjyun克dh新wiyms闻pdm网adjj版权所有,请勿未授权转载!!!
parent::__construct();
虎rytia泰wiu克za新agyit闻xpc网hwciv版权所有,请勿未授权转载!!!
echo 'b';
虎kn泰cpc克sjuc新tc闻ke_网ufk_f版权所有,请勿未授权转载!!!
}
虎ku泰yizev克_a新xy闻otud网n版权所有,请勿未授权转载!!!
}
虎ewror泰gdm克y新e闻yfmlc网mo版权所有,请勿未授权转载!!!
虎po泰geh克zue新hrnk闻ts网d版权所有,请勿未授权转载!!!
$test=new b();
虎obxtg泰tt克_y新mq闻ade_o网km版权所有,请勿未授权转载!!!
那么输出结果是:
虎ejrab泰wrq克bj新dwx闻jfkn网iumu版权所有,请勿未授权转载!!!
ab
虎ecrp泰rg克tp新_s闻nqb网qsfik版权所有,请勿未授权转载!!!
虎t泰hr克cxfa新s闻berth网_版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎k泰ifr克_新cxrey闻hsswr网t版权所有,请勿未授权转载!!!
虎zozk泰pz克y新b闻i网lvqvs版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎n泰ij克z_m新kmhgu闻ua网ls版权所有,请勿未授权转载!!!
虎z泰q克nhyyx新uglob闻q网k版权所有,请勿未授权转载!!!
BaseAction.class.php
虎wzprr泰ee克k新y闻k_b网hatg版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎tysi泰oedz克mqk新rwiie闻njilr网fj版权所有,请勿未授权转载!!!
public function _initialize(){
虎nlgn泰gqpif克kpj新no闻zgx网fc版权所有,请勿未授权转载!!!
echo 'baseAction';
虎nteq泰v克t新ra闻jgbw网r版权所有,请勿未授权转载!!!
}
虎rui_b泰fm克wmz新opwep闻pprv网ogswu版权所有,请勿未授权转载!!!
}
虎xdu泰e克vl新frwtv闻jhq网rnul版权所有,请勿未授权转载!!!
虎vfroa泰qb克thg新irtwm闻al网pt版权所有,请勿未授权转载!!!
IndexAction.class.php
虎lbt泰m克_tbdl新cemrt闻tqrx网vxhiq版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎cmsqv泰dktb克xg新oblbs闻fzroc网ted版权所有,请勿未授权转载!!!
public function (){
虎l泰r克ero新hyb闻yt网pnzu版权所有,请勿未授权转载!!!
echo 'indexAction';
虎d泰_sjg克pvy新y_suv闻memam网nt版权所有,请勿未授权转载!!!
}
虎pv泰pmi克m新_b闻jp网x版权所有,请勿未授权转载!!!
}
虎j泰dmmve克wn_ww新kjpn闻zvzx网njo版权所有,请勿未授权转载!!!
虎_odx泰rmx克c新dx闻vcaiv网pkwty版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎ngbf泰hq_克s新a闻uadi网xolk版权所有,请勿未授权转载!!!
baseActionindexAcition
虎qrt泰dvmq克zbo新bn_n闻k网plwa版权所有,请勿未授权转载!!!
虎c_rpc泰ad_克bwapw新muqt闻qd网c版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎wmdm泰v克xs新olnc闻fuvme网eps版权所有,请勿未授权转载!!!
虎xcw泰tplc克dd新z闻kjhn网sdbc版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎acnx泰sskc克icq新whzj闻sen_v网dnll版权所有,请勿未授权转载!!!
Declaração: todos OS artigos / desenhos reproduzidos Neste site têm por objectivo TRANSMITIR Mais informações e facilitar a discussão, o que não significa que o site, o anfitrião e o organizador concordem com as SUAS opiniões ou confirmem a autenticidade do SEU conteúdo. O conteúdo DOS artigos é apenas para referência. Se OS direitos do autor original forem violados, contacte o Administrador do site.
Lista de comentários
-
Sem dados