ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 3148
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎way泰qgho克kg新n闻_网kzgd版权所有,请勿未授权转载!!!
虎m_泰em克fmqzf新ibqiw闻aisya网x_d版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎_泰jbv克jhe新ec_c闻thbi网q版权所有,请勿未授权转载!!!
虎qsg泰jaj__克y新szeft闻u网bc版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎vq泰n克dy新y_ki闻mrsy网b版权所有,请勿未授权转载!!!
虎smc泰y克unpq新m闻hf_we网a版权所有,请勿未授权转载!!!
a.php
虎rsf泰_xxvu克dhlju新owbje闻vo网cf版权所有,请勿未授权转载!!!
class a{
虎ch泰jme克o新deoy闻dm网mbuy版权所有,请勿未授权转载!!!
function __construct(){
虎ulcn泰wghk克vq新thy闻dahk网e版权所有,请勿未授权转载!!!
echo 'a';
虎z泰b克zh新nwv闻nmaq网aqn版权所有,请勿未授权转载!!!
}
虎szmmy泰xfb克lith新gjea闻y网szg版权所有,请勿未授权转载!!!
}
虎m泰k克lkksb新hqnw闻g网skkxv版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎ga泰hbt克sdyg新nrhq闻mdel网v版权所有,请勿未授权转载!!!
include 'a.php';
虎onf泰hviah克kzry新jz闻dnhz网ayy版权所有,请勿未授权转载!!!
class b extends a{
虎snolr泰aqlnn克mi新r闻q网llu版权所有,请勿未授权转载!!!
function __construct(){
虎xkm泰r克crxgc新_闻hecgs网esa版权所有,请勿未授权转载!!!
echo 'b';
虎ol泰neb克fzpgj新fepvo闻xicw网yex版权所有,请勿未授权转载!!!
}
虎gplq泰p克nwfuv新stvkf闻xw网koony版权所有,请勿未授权转载!!!
}
虎cd泰pmx克mfw新eun_闻jp网r版权所有,请勿未授权转载!!!
虎bcqp泰vb克hvv新lu闻fbru网bsubv版权所有,请勿未授权转载!!!
$test=new b();
虎u泰dltr克_dk__新w闻a网aaj版权所有,请勿未授权转载!!!
运行结果:
虎isdg泰zvy_m克jg新au_闻s网xyexk版权所有,请勿未授权转载!!!
b
虎ug泰qqei克d新wbe闻fuc网y版权所有,请勿未授权转载!!!
虎pqdmk泰ymvu克_d新thok闻bvs网xcwev版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎olz泰vjepn克zt新nszw闻lada网bf_i版权所有,请勿未授权转载!!!
虎nqf泰iyfkz克usi新wxj闻kecz网etgi版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎w泰yznf克_新r闻zc网c版权所有,请勿未授权转载!!!
include 'a.php';
虎gfim泰svw克_vjjo新r闻c网u版权所有,请勿未授权转载!!!
class b extends a{
虎n泰r克oqjeb新i闻hlrl网n版权所有,请勿未授权转载!!!
function __construct(){
虎iq泰vi克xhnv新yqexq闻exow网rz版权所有,请勿未授权转载!!!
parent::__construct();
虎tiup泰frh克wj新bvri闻m网ow版权所有,请勿未授权转载!!!
echo 'b';
虎aai泰wouz克j新zrii闻csr网v版权所有,请勿未授权转载!!!
}
虎pbls泰c克fz新db闻a网vzaeh版权所有,请勿未授权转载!!!
}
虎nodr泰ny克eb新ca闻hl网_w版权所有,请勿未授权转载!!!
虎bif泰_czi克su新mcytw闻fn网n版权所有,请勿未授权转载!!!
$test=new b();
虎_a泰cybr克e新rusn闻cwo网mku版权所有,请勿未授权转载!!!
那么输出结果是:
虎venf泰boas克ysn新hyva闻ipaaw网azgt版权所有,请勿未授权转载!!!
ab
虎teume泰uth克ju新aem闻er网p版权所有,请勿未授权转载!!!
虎se泰br克lzn新pbr闻crzbt网fgo版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎mnwvb泰wy克wp新e_gv闻bp网a版权所有,请勿未授权转载!!!
虎aj泰ja克lxnn新jihal闻xo网mk版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎d泰bmfd克iow新x_ca闻aktv网wlwqd版权所有,请勿未授权转载!!!
虎ndwp_泰gbin克nis新pl_nq闻ijbj网vhz_h版权所有,请勿未授权转载!!!
BaseAction.class.php
虎f泰z克d新lyfc闻v网rsnxc版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎slg泰hzzmd克gp新fapq闻ye网fm版权所有,请勿未授权转载!!!
public function _initialize(){
虎mxyj泰vkdqd克waxi新wac闻pzgj网p版权所有,请勿未授权转载!!!
echo 'baseAction';
虎iavk泰lftj克k_igw新blkb闻_rzh网bvp版权所有,请勿未授权转载!!!
}
虎pxnl泰qcmj克kaorz新fo闻_网bfk版权所有,请勿未授权转载!!!
}
虎iwne泰iqz克pl新w闻r网avemu版权所有,请勿未授权转载!!!
虎ekrtf泰hbpvb克mltos新sazpv闻pqap网vnjr版权所有,请勿未授权转载!!!
IndexAction.class.php
虎wp泰e克okrm新ltwu_闻qn网xxsm版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎nnfxp泰h克_ubyc新eqpfx闻_wo网ldgu版权所有,请勿未授权转载!!!
public function (){
虎g泰vl克ahdl新wdsoy闻chx网o_版权所有,请勿未授权转载!!!
echo 'indexAction';
虎rsv泰whqqg克_lgvx新isy闻qv网xjzzk版权所有,请勿未授权转载!!!
}
虎k泰sg克hmyb新tqe闻wxlsd网ahhit版权所有,请勿未授权转载!!!
}
虎b泰j克mw新_fw闻rt_rv网hves版权所有,请勿未授权转载!!!
虎_pipc泰e克y新o闻d网fohmw版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎zvr泰mv_dd克tzub_新d闻ubk网di版权所有,请勿未授权转载!!!
baseActionindexAcition
虎crmf泰hdo克xlt新z闻ww网usi版权所有,请勿未授权转载!!!
虎nvgs泰kujoh克jc新jpui闻_yrh网r版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎r泰aoqh克boqpp新vrrg闻foyjx网sm版权所有,请勿未授权转载!!!
虎wg_j泰q_克pr新vbiuc闻ccco网s版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎jb泰ynf克v新kvj_闻co网vtslv版权所有,请勿未授权转载!!!
Oświadczenie: wszystkie artykuły / rysunki zamieszczone na tej stronie mają na celu przekazywanie więcej informacji i ułatwienie dyskusji, co nie oznacza, że strona internetowa, gospodarz i organizator zgadzają się z ich opiniami lub potwierdzają autentyczność ich treści. Zawartość tych artykułów jest tylko do odwołania. W przypadku naruszenia praw pierwotnego autora prosimy o kontakt z administratorem strony internetowej.
Lista komentarzy
-
Brak danych