ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 5739
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎hmdj泰ay克_sic新yc闻f_vq网ow版权所有,请勿未授权转载!!!
虎iiycq泰nsctp克nv新drfwy闻vnkwr网yfsbx版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎b泰e克b新ldf闻p网gw版权所有,请勿未授权转载!!!
虎jqpnr泰u克x新f闻jbour网fnq版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎igu泰ndkqv克fsjg新dkjnm闻nrs网pm版权所有,请勿未授权转载!!!
虎aolq泰hvqu克zscfi新zyef闻lfv网phwc版权所有,请勿未授权转载!!!
a.php
虎p泰rf克yu新ni闻bj网qxj版权所有,请勿未授权转载!!!
class a{
虎i泰bdto克tinrs新ywla闻qb网dod版权所有,请勿未授权转载!!!
function __construct(){
虎z_y泰dwed克pvgxo新mj闻yll网w版权所有,请勿未授权转载!!!
echo 'a';
虎ykeyi泰p_zz_克sw新stb闻wux网xe版权所有,请勿未授权转载!!!
}
虎ux泰dpq克vzso新eaz__闻rtqob网elo版权所有,请勿未授权转载!!!
}
虎sewn泰sno克qq新mjy闻y_j_u网b版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎izdqi泰a克kx新lj闻lu_网yi版权所有,请勿未授权转载!!!
include 'a.php';
虎u泰bqopi克de新o闻hxxp网sk版权所有,请勿未授权转载!!!
class b extends a{
虎twffn泰zuvzh克dv新p闻lz网hbh版权所有,请勿未授权转载!!!
function __construct(){
虎prulq泰nzvdh克mrwki新l闻tlba网xyrw版权所有,请勿未授权转载!!!
echo 'b';
虎kh泰_ojae克bu新l闻zp网tnl版权所有,请勿未授权转载!!!
}
虎b泰yoo克bl_w新epbbz闻dnc网sonww版权所有,请勿未授权转载!!!
}
虎ob泰kja_克nuae新lapt闻atn网l版权所有,请勿未授权转载!!!
虎in泰qyx克xmaz新n闻cyiyv网m_ac版权所有,请勿未授权转载!!!
$test=new b();
虎sfn泰or克q新i闻sp网_gvfp版权所有,请勿未授权转载!!!
运行结果:
虎lz泰cbqrk克jkue新kctn闻w_网fzoqz版权所有,请勿未授权转载!!!
b
虎wd_r泰lmh克xqr新j_tn闻dc_网urrmr版权所有,请勿未授权转载!!!
虎i泰ivnl克qubf新c闻s网vtz版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎j泰bdfi克iuv新sh闻qcfv网pa版权所有,请勿未授权转载!!!
虎qhtne泰mge克paed新efikl闻lw网zf版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎fnq泰i克fgs_新dv闻tda网egvt_版权所有,请勿未授权转载!!!
include 'a.php';
虎u_b_泰qkew克hmblq新vtqvg闻lth网nvi_b版权所有,请勿未授权转载!!!
class b extends a{
虎wpt泰loy_b克hkx新tlqk闻z网pntt版权所有,请勿未授权转载!!!
function __construct(){
虎tc泰ctan克cm_e新wgwmb闻drud网j版权所有,请勿未授权转载!!!
parent::__construct();
虎_jxr泰mzwk克nh新lb闻xznp网nj版权所有,请勿未授权转载!!!
echo 'b';
虎rrkdy泰a克vjrot新ly闻hy网lgbol版权所有,请勿未授权转载!!!
}
虎rls_泰nq克hdzh新wnnfg闻gckt网ol版权所有,请勿未授权转载!!!
}
虎hvo_s泰n克i新ps闻zx网zb版权所有,请勿未授权转载!!!
虎jcrm泰pzkw克ofu新eoo闻surt网leofk版权所有,请勿未授权转载!!!
$test=new b();
虎wigt泰fnrir克eryqo新dbqai闻u网uq版权所有,请勿未授权转载!!!
那么输出结果是:
虎qx泰drhd克lnmfi新s闻mqvw网cf版权所有,请勿未授权转载!!!
ab
虎zgvx泰l克j新qemr闻bv网gwxo版权所有,请勿未授权转载!!!
虎dnf泰ebec克c_wme新ttb闻maw网bnhg版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎hd泰nydfr克idwv新fxz闻ajt网xg版权所有,请勿未授权转载!!!
虎rt泰c克xkj新s闻mdwi网o版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎zstw泰_xri克nrn新ltfi闻qhfc网x版权所有,请勿未授权转载!!!
虎ci泰_pe克dlom新hn闻fkuqb网kp版权所有,请勿未授权转载!!!
BaseAction.class.php
虎qdged泰g克pe新trpwp闻s网wxh版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎ou泰ekcry克sscb新uknq闻bur网_wxmz版权所有,请勿未授权转载!!!
public function _initialize(){
虎fxujh泰lk克zj新blco闻vt网isy_版权所有,请勿未授权转载!!!
echo 'baseAction';
虎et泰okp克vreqt新iqdw闻wfa网wa版权所有,请勿未授权转载!!!
}
虎ynaue泰a克isg新lgbch闻pyxi网b版权所有,请勿未授权转载!!!
}
虎kczzu泰dv克wr新qrubq闻l网bhmh版权所有,请勿未授权转载!!!
虎y_c_泰svs克_ng新gzt闻cltqx网kiurv版权所有,请勿未授权转载!!!
IndexAction.class.php
虎m泰evmvi克chaiv新_mu闻csh网ees版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎s泰_fd克j新bflme闻ybugj网cgp版权所有,请勿未授权转载!!!
public function (){
虎a泰eeo克ipfuv新bswxt闻kql_v网vqns版权所有,请勿未授权转载!!!
echo 'indexAction';
虎q泰bmon克d新q闻cujsr网jeapt版权所有,请勿未授权转载!!!
}
虎kikp泰cw克ns新oi闻zisj网qous版权所有,请勿未授权转载!!!
}
虎earun泰_克lqmgs新_q闻ya_b网du版权所有,请勿未授权转载!!!
虎rilm泰ymb克jck新n闻w网xg版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎yqy泰mg克mv新gdjt闻npa网jg版权所有,请勿未授权转载!!!
baseActionindexAcition
虎qjl泰hed克z新btwwo闻rn网isvah版权所有,请勿未授权转载!!!
虎nmxz泰rcl克d新v_jl闻rds网ryr版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎tearq泰pmugb克oecjf新qy闻ovvq网onl版权所有,请勿未授权转载!!!
虎nda泰v克bw新l_vck闻uyjdk网kepf版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎e泰jcunt克swqia新bs闻kvof网tex版权所有,请勿未授权转载!!!
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