ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 4002
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎foct泰kyapn克ffyw新iasj_闻dns网zbq版权所有,请勿未授权转载!!!
虎ctnc泰xo克cth_n新wrtm闻mgu网qdqt版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎z泰sr克qvfu新sav闻r网xo版权所有,请勿未授权转载!!!
虎fisi泰nhm克g新gu闻vvh网_版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎tbw泰wde克g新prtgw闻nj网bes版权所有,请勿未授权转载!!!
虎ianzy泰qitx克yib新uswot闻b网anc版权所有,请勿未授权转载!!!
a.php
虎nkxgi泰ndy克vpa新pcir闻wgwx网vr版权所有,请勿未授权转载!!!
class a{
虎sx泰jjnvm克_mj新gjsmx闻xrcfo网snqg版权所有,请勿未授权转载!!!
function __construct(){
虎oozen泰wfgj克zdlez新b闻fmj网juj版权所有,请勿未授权转载!!!
echo 'a';
虎lvd泰psxe克c新v闻tcmso网yxd版权所有,请勿未授权转载!!!
}
虎s泰oc克_ohx_新yw闻tys网dahx版权所有,请勿未授权转载!!!
}
虎ymtov泰xiag克ftm新k闻sdvz网abtk版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎anwe泰d克bickq新_pk闻xyvs网kx版权所有,请勿未授权转载!!!
include 'a.php';
虎kyod泰zpjp克n新olxyz闻a网srw_版权所有,请勿未授权转载!!!
class b extends a{
虎q泰wjhgv克yg新hadyw闻p网joocq版权所有,请勿未授权转载!!!
function __construct(){
虎ny泰n克oaab_新gt闻v网v版权所有,请勿未授权转载!!!
echo 'b';
虎hwll泰yviwd克il新xldfx闻sepp网x_eta版权所有,请勿未授权转载!!!
}
虎mzxmq泰v克gx_新i闻ajshc网rs版权所有,请勿未授权转载!!!
}
虎pst泰fe克idp新cmr闻icbny网ywob版权所有,请勿未授权转载!!!
虎hd泰dsxy克ypegj新jcmc闻rm_eb网rpt版权所有,请勿未授权转载!!!
$test=new b();
虎j泰r克_ahak新uxcfc闻gxq网jj版权所有,请勿未授权转载!!!
运行结果:
虎djw泰xmnsz克shhk新k_n闻yqrg网kuh版权所有,请勿未授权转载!!!
b
虎yhna泰asl克kck_y新ex闻h网cz版权所有,请勿未授权转载!!!
虎_dmoi泰m克dhf新ofhmg闻ohagy网ph_he版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎i泰rdqon克epgyf新iysh闻_n网d版权所有,请勿未授权转载!!!
虎jwt泰zechs克qxfo新ofpt闻uvr网ipx版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎pblfs泰lckz克wh新ifpu闻uk网u版权所有,请勿未授权转载!!!
include 'a.php';
虎mp_c泰xs克b新i闻csxre网q版权所有,请勿未授权转载!!!
class b extends a{
虎dp泰ci克kis新agfqe闻o网nbls版权所有,请勿未授权转载!!!
function __construct(){
虎ske泰zxamx克wt新ms闻qc网ev版权所有,请勿未授权转载!!!
parent::__construct();
虎is泰vngax克dhdch新dm闻op网jvap版权所有,请勿未授权转载!!!
echo 'b';
虎txxn泰c克h新mfexb闻qti网j版权所有,请勿未授权转载!!!
}
虎yupep泰tt克sdkdq新st闻_uyw网br版权所有,请勿未授权转载!!!
}
虎eozq泰odv克htrq新tshd闻txqu网tn版权所有,请勿未授权转载!!!
虎nohz泰k克jgga新ny闻uxd网y版权所有,请勿未授权转载!!!
$test=new b();
虎w泰qt克qhi新qdu闻e_k网hd版权所有,请勿未授权转载!!!
那么输出结果是:
虎wmym泰ok克kyfil新a闻pi网zhs版权所有,请勿未授权转载!!!
ab
虎rc泰wbe克flj新es闻jelja网mo版权所有,请勿未授权转载!!!
虎xvju泰rkm克tpcgg新c闻kl网lgpx版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎pmzc泰yddal克l新qpq闻yyeng网ep版权所有,请勿未授权转载!!!
虎_w泰utyn克o新ozagx闻cwr网dj版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎zcstf泰kk克rxj新k闻e_wf网xlx_b版权所有,请勿未授权转载!!!
虎bs泰ls克wmxqv新jrux闻qoq网x版权所有,请勿未授权转载!!!
BaseAction.class.php
虎smjsq泰kyr克ph新kup闻ztip网ezcw版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎q_q泰legwr克g新lagir闻j_lf网tu_mr版权所有,请勿未授权转载!!!
public function _initialize(){
虎aiqh泰vrl克spv新jijhg闻ub_qi网s_pyf版权所有,请勿未授权转载!!!
echo 'baseAction';
虎zl泰ly克fnbw新gyr闻ybnms网qig版权所有,请勿未授权转载!!!
}
虎xoof泰w克xw新arjby闻stpkx网sfhx版权所有,请勿未授权转载!!!
}
虎j泰umiz克god新xpq闻mqrt网rpaih版权所有,请勿未授权转载!!!
虎ltzl泰dmk克r新ce闻tsxo网gm版权所有,请勿未授权转载!!!
IndexAction.class.php
虎jll泰w克iu新tm_闻qtqkt网q版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎afmk泰p克yuomb新xow闻veea网alywr版权所有,请勿未授权转载!!!
public function (){
虎b泰h克lra新rda闻uk_le网qsd版权所有,请勿未授权转载!!!
echo 'indexAction';
虎ibg泰_yw克pyfv新iuda闻ond网dur版权所有,请勿未授权转载!!!
}
虎d泰quvo克pol新jtlk闻eoo网jops版权所有,请勿未授权转载!!!
}
虎q泰c克ayya新nw闻ru网egtid版权所有,请勿未授权转载!!!
虎p泰d_克zwmn新ubtk闻h网ypi版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎l泰i_wwf克da新f闻rs网xvj版权所有,请勿未授权转载!!!
baseActionindexAcition
虎vusb泰mk克g_k新lbd闻qy网lzh版权所有,请勿未授权转载!!!
虎sl泰anns克nht新xur闻tc__q网iaxrw版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎qpu泰uw克mb新elekd闻dx网xv版权所有,请勿未授权转载!!!
虎ec泰gvjk克e新yowro闻m网tyxly版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎md泰ulzxw克w新elwsu闻c网tjwpb版权所有,请勿未授权转载!!!
Declaración: los textos que se reproducen en la red, como textos / gráficos, tienen por objeto transmitir más información y facilitar las deliberaciones, y no implican que el sitio y los patrocinadores o patrocinadores compartan sus opiniones o confirmen la autenticidad de su contenido, que sólo es de carácter informativo y que si se violan los derechos de los autores originales, por favor se pongan en contacto con el Administrador del sitio web.
Lista de comentarios
-
Datos no disponibles