ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 3146
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎wkefg泰t克n新ti闻th网y版权所有,请勿未授权转载!!!
虎ue泰dze克vfb新_r闻clf网hlgm版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎njz泰rvz克dnb新zgfn闻az网bd版权所有,请勿未授权转载!!!
虎nrxn泰eyv克xkfqt新ipck闻ws网_qvqe版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎per_i泰z克y_新h_p闻fdw网bc版权所有,请勿未授权转载!!!
虎e泰pki克t新aid_e闻l网pr版权所有,请勿未授权转载!!!
a.php
虎ii泰ta克aji新tooiz闻cgbt网f版权所有,请勿未授权转载!!!
class a{
虎tk泰zoplq克s_g新xp闻sgc网x版权所有,请勿未授权转载!!!
function __construct(){
虎cgls泰k克fhpjk新bkm闻v网a版权所有,请勿未授权转载!!!
echo 'a';
虎h泰u克pr新hu闻q网z版权所有,请勿未授权转载!!!
}
虎ec泰kfyju克e新u闻yw网wslp版权所有,请勿未授权转载!!!
}
虎lmb泰boe克sb_ke新vca闻a网xxd版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎_泰hnj克uw新mghm闻rwhi网xbo版权所有,请勿未授权转载!!!
include 'a.php';
虎x泰msqhu克cv新f闻i网ndtz版权所有,请勿未授权转载!!!
class b extends a{
虎s泰xgu克euz新pi_a闻wfr网r版权所有,请勿未授权转载!!!
function __construct(){
虎eglty泰wo_pc克yj新h闻j网rl版权所有,请勿未授权转载!!!
echo 'b';
虎de泰mxzsk克ylv新tvvl闻jlup网fff版权所有,请勿未授权转载!!!
}
虎jvbw泰gxpvm克ty新rylj闻cj网ov版权所有,请勿未授权转载!!!
}
虎ft泰po克sto新gbl闻kmzr网u_版权所有,请勿未授权转载!!!
虎dkp泰m克ftp新ejndd闻p网w版权所有,请勿未授权转载!!!
$test=new b();
虎rzsj泰uiyk_克ll新uri闻svev网uw版权所有,请勿未授权转载!!!
运行结果:
虎yd泰o克i新ryw闻n网jum版权所有,请勿未授权转载!!!
b
虎_pm泰mu克elbdn新qk闻jln网mzm版权所有,请勿未授权转载!!!
虎sgvbb泰wx克cupv新chmr闻aqn网zxsu版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎s泰ow克ke新b闻xog网ui版权所有,请勿未授权转载!!!
虎zte泰hm克gck新c闻_uuc网mfs版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎rtw泰ejcj克a新buejf闻q网atwra版权所有,请勿未授权转载!!!
include 'a.php';
虎mok泰redv克reo新cp闻crov网imhk版权所有,请勿未授权转载!!!
class b extends a{
虎xi泰bq克bf新o闻kq网xwzfb版权所有,请勿未授权转载!!!
function __construct(){
虎ylym泰e克l新zewyw闻q网_ai版权所有,请勿未授权转载!!!
parent::__construct();
虎lnjks泰wn_克rotz新dawoj闻w网kfmy版权所有,请勿未授权转载!!!
echo 'b';
虎oi泰jcy克ia新l_l闻dww网_tjq版权所有,请勿未授权转载!!!
}
虎dh泰kf克knnph新z_m闻ykw网rjec版权所有,请勿未授权转载!!!
}
虎lifru泰s克f新tao闻zgua网vwzu版权所有,请勿未授权转载!!!
虎usjq泰z克rissg新obcdg闻uj网hegwq版权所有,请勿未授权转载!!!
$test=new b();
虎k泰rruuu克s_jp新oiq闻a网a版权所有,请勿未授权转载!!!
那么输出结果是:
虎kmz泰tlxn克ljva新qow闻zqcfp网hon版权所有,请勿未授权转载!!!
ab
虎l_kqq泰h克nyd新htx闻ph网zpvwu版权所有,请勿未授权转载!!!
虎gnv_z泰e_ha克oj新jjkfe闻xz网io版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎i泰nwjtq克hyh新f闻hxg_w网uki版权所有,请勿未授权转载!!!
虎sis泰fo克j新wstu闻rxzm网ijww版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎wp泰hfo克g新fge闻y_ez网srxl版权所有,请勿未授权转载!!!
虎f_泰gkqqj克ojyjs新og闻d网_ttuq版权所有,请勿未授权转载!!!
BaseAction.class.php
虎ehk泰fc克w新bdh闻eiltq网qhedm版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎aw泰te克j新civj闻yym_u网vyry版权所有,请勿未授权转载!!!
public function _initialize(){
虎cknb泰xud克uj新eq闻tgh网zxj版权所有,请勿未授权转载!!!
echo 'baseAction';
虎p_j泰pj克_w新vo闻odq网tc版权所有,请勿未授权转载!!!
}
虎vkpv泰qlmu克dxn新_kpn闻t网gxa版权所有,请勿未授权转载!!!
}
虎ekd泰hphv克pax新qcg闻x网cfum版权所有,请勿未授权转载!!!
虎i泰ibk克qui新vnvt闻ib网ddz版权所有,请勿未授权转载!!!
IndexAction.class.php
虎br泰yj克h新ax闻u网_qzpy版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎obow泰r克knb新bh闻_vc网h版权所有,请勿未授权转载!!!
public function (){
虎k泰vz克kvhos新ymh_闻zis_网p_mo版权所有,请勿未授权转载!!!
echo 'indexAction';
虎x泰tc克rpu新gk闻te网qnqxv版权所有,请勿未授权转载!!!
}
虎z泰y克b新cfefg闻ptpl网noh版权所有,请勿未授权转载!!!
}
虎fnzo泰ibdbw克zcveg新fzstm闻khka网ye版权所有,请勿未授权转载!!!
虎m泰aung克oimg新fgdt闻hckv网xzsdp版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎oeu泰nilqe克p新hk闻tvucv网u版权所有,请勿未授权转载!!!
baseActionindexAcition
虎bfao泰xqiq克o新zte闻irjyr网jjw版权所有,请勿未授权转载!!!
虎w_xan泰t克f新atmv闻jmicc网joszh版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎p_qob泰bnahi克onib新k闻cj_fp网r版权所有,请勿未授权转载!!!
虎_td泰hqrnw克f_pex新s闻_y网km版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎nk泰zug克sab新sko闻vxc网bd版权所有,请勿未授权转载!!!
Déclaration: le fait que des articles tels que les textes et les graphiques reproduits sur le site Web ne signifie pas que la station et les organisateurs partagent leur point de vue ou confirment l 'authenticité de leur contenu ne signifie pas qu' ils ont pour objet de communiquer des informations supplémentaires et de faciliter la discussion.
Liste des commentaires
-
Données non disponibles