ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 1986
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎lnnsb泰_a_hr克c新tv闻fdysf网yuo版权所有,请勿未授权转载!!!
虎ybsu泰zjvv克sxay新hq闻_g网y版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎zxwxh泰rf克_ipy新_ek闻xej网ca版权所有,请勿未授权转载!!!
虎zyaf泰yv_h克rz新killn闻iy网y版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎h泰bbyy克avzf新kc闻eaigl网l版权所有,请勿未授权转载!!!
虎hai泰k克u新urd闻hodlf网unfbf版权所有,请勿未授权转载!!!
a.php
虎egti泰gbe克j新yyi闻c网vw版权所有,请勿未授权转载!!!
class a{
虎ctja泰ay克hiq新dko闻tpsn网cubpr版权所有,请勿未授权转载!!!
function __construct(){
虎owbs泰hy克i新buyr闻rmzzp网xi版权所有,请勿未授权转载!!!
echo 'a';
虎lpou泰sj克cl新fowpz闻ig网otg版权所有,请勿未授权转载!!!
}
虎r泰owaan克rfjvf新e闻v网waeuj版权所有,请勿未授权转载!!!
}
虎veco泰ryaqz克nov新chhy闻h网n_版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎w泰z克ft新ey闻nxaa网lb版权所有,请勿未授权转载!!!
include 'a.php';
虎wn泰h克p_ya新sa闻ojl网ix版权所有,请勿未授权转载!!!
class b extends a{
虎sy泰ygbc克unf新nkd闻yhmk网gjhtw版权所有,请勿未授权转载!!!
function __construct(){
虎bas泰p_ta克bm_新byqc闻qml网l版权所有,请勿未授权转载!!!
echo 'b';
虎zjrn泰kkw克oj新gwve闻ihj网_a版权所有,请勿未授权转载!!!
}
虎of泰m克y新_m闻xiha网gxnnr版权所有,请勿未授权转载!!!
}
虎gy泰cm克hxc新tofte闻no网pzd版权所有,请勿未授权转载!!!
虎ylcj泰bmwy_克xkbqf新iegt闻g网biey版权所有,请勿未授权转载!!!
$test=new b();
虎e泰lavhj克wvh新pf闻wyt网l版权所有,请勿未授权转载!!!
运行结果:
虎gdrqr泰q克y_新jijq闻dpwfi网utbuc版权所有,请勿未授权转载!!!
b
虎wu泰tev克jizbu新gpwa闻tkhr_网hcx版权所有,请勿未授权转载!!!
虎j泰sdqn克sxha新q闻uty网lp版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎vg泰u_fwy克bc_新_bbg闻j网k版权所有,请勿未授权转载!!!
虎a泰muhdo克qrvt新kgwl闻pj网rn_m版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎m_rbe泰lxqwn克aha新wuaur闻j网lt版权所有,请勿未授权转载!!!
include 'a.php';
虎z泰ke克hc新a闻zn网bllv版权所有,请勿未授权转载!!!
class b extends a{
虎r泰onor克wxihp新zor闻tgjdn网bai版权所有,请勿未授权转载!!!
function __construct(){
虎ic_l泰hhwyo克md新ronn闻gmi网bbu版权所有,请勿未授权转载!!!
parent::__construct();
虎n泰emd克ezym新b闻cd网unei版权所有,请勿未授权转载!!!
echo 'b';
虎jwoiy泰nnggt克tqcsd新qc闻cq网a版权所有,请勿未授权转载!!!
}
虎u泰i克tfwm新yioi闻pvadr网o版权所有,请勿未授权转载!!!
}
虎yvys泰vdu克ehie新wjm闻t网b版权所有,请勿未授权转载!!!
虎txd泰oae克t新oav闻suuzz网zcvwn版权所有,请勿未授权转载!!!
$test=new b();
虎ld泰crsc克y新bosb闻zqfa网_k版权所有,请勿未授权转载!!!
那么输出结果是:
虎qu泰xtf克ldjyi新mlm闻yoibd网lc_g版权所有,请勿未授权转载!!!
ab
虎gb泰ksbv克q新njrid闻wsl网nmbw版权所有,请勿未授权转载!!!
虎p泰cv克aphra新i闻bbfe网sbvh版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎vzqb泰jw克mcyzq新elq闻lynap网txjfd版权所有,请勿未授权转载!!!
虎ur泰cpgn克jiw新ezbym闻_网zji版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎fh_a泰yaqx克fhs新icu闻ps网sjw版权所有,请勿未授权转载!!!
虎x_m泰wzf克ylorx新cyjj闻zaa网_版权所有,请勿未授权转载!!!
BaseAction.class.php
虎q泰x克u新yeu_闻gkokr网u版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎vhml泰neyl克lq_fw新t闻mzl网var版权所有,请勿未授权转载!!!
public function _initialize(){
虎wqau泰ad_r克opg新d_闻q网d版权所有,请勿未授权转载!!!
echo 'baseAction';
虎vs泰pgjs克aixsz新l闻tvio网zla版权所有,请勿未授权转载!!!
}
虎ucgvn泰ijus克kqig新afuqh闻tgsk网j版权所有,请勿未授权转载!!!
}
虎o泰t克yrta_新aht_j闻w网rk版权所有,请勿未授权转载!!!
虎pdtdw泰t克rsvr新unw闻pr网t版权所有,请勿未授权转载!!!
IndexAction.class.php
虎azn泰dp克ywbm新g闻cfrau网wkjth版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎wvrzu泰v克h新g_lv闻f_网becje版权所有,请勿未授权转载!!!
public function (){
虎tvu泰hgra克cj新w闻rax网z版权所有,请勿未授权转载!!!
echo 'indexAction';
虎n泰lopdj克he_新zdt闻r_d网z_版权所有,请勿未授权转载!!!
}
虎t_hh泰m克cs新j_lne闻vgfpp网wyp版权所有,请勿未授权转载!!!
}
虎ikhq泰ldf克ibi新l_xm闻idjxt网k版权所有,请勿未授权转载!!!
虎slhb泰hezlf克g新tqm闻you网iv版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎zjggh泰v_克mnk新pu闻ax网f版权所有,请勿未授权转载!!!
baseActionindexAcition
虎secam泰w克mi新q闻z网cgoei版权所有,请勿未授权转载!!!
虎yyxld泰ugbn克old新guaq闻orrc_网f_b版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎zakq泰kejcb克yue新wjcja闻mm网nzh版权所有,请勿未授权转载!!!
虎jdg泰wpsaf克fp新um闻dnqgn网grbkr版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎uj泰lgrtj克nr新wfqp闻_网urdaq版权所有,请勿未授权转载!!!
Dichiarazione: tutti gli articoli / disegni riprodotti su questo sito web hanno lo scopo di trasmettere più informazioni e facilitare la discussione, il che non significa che il sito web, l'host e l'organizzatore siano d'accordo con le loro opinioni o confermino l'autenticità dei loro contenuti. I contenuti degli articoli sono di riferimento. Se i diritti dell'autore originale sono violati, si prega di contattare l'amministratore del sito web.
Commento elenco
-
Nessun dato