ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 5493
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎okoq泰k克ne_jj新udll闻w网ri版权所有,请勿未授权转载!!!
虎nhw泰h_lbf克dnjn新foqj闻i网w版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎bo泰ep克wlddb新mb闻hajs网a版权所有,请勿未授权转载!!!
虎vf_ca泰m_i克z新qw闻oz网o版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎hql泰gft克cn新te_闻ngll网gy版权所有,请勿未授权转载!!!
虎sfeou泰qan克t新dkcib闻_i网qtxm版权所有,请勿未授权转载!!!
a.php
虎c泰ef克sf新qx闻p网mith_版权所有,请勿未授权转载!!!
class a{
虎yld泰o克akxin新zelbo闻lf网__版权所有,请勿未授权转载!!!
function __construct(){
虎k泰h克s新uuzac闻xnd网vne版权所有,请勿未授权转载!!!
echo 'a';
虎kzflx泰bh克trkd新kmcco闻ce网zeo版权所有,请勿未授权转载!!!
}
虎b泰j克lmogg新t闻c网m版权所有,请勿未授权转载!!!
}
虎cn泰kpp克woe新t_d闻hqa网z版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎qf泰hvn克ynhs新a闻zval网uombg版权所有,请勿未授权转载!!!
include 'a.php';
虎boo泰qaiqf克ghmw新a_闻umns网r版权所有,请勿未授权转载!!!
class b extends a{
虎ag泰l克pqqd新w闻boy网elgsw版权所有,请勿未授权转载!!!
function __construct(){
虎hzp泰tsyzf克rig新uc闻h网tsgq版权所有,请勿未授权转载!!!
echo 'b';
虎jwo泰b克t新f闻raxc网aw版权所有,请勿未授权转载!!!
}
虎zeyl泰dlpw克pb新wdhic闻avn网lc_f版权所有,请勿未授权转载!!!
}
虎s泰hlb克ea新vpa_o闻eieed网mbja版权所有,请勿未授权转载!!!
虎ugg泰ahcm克fop新aq_闻sada网q版权所有,请勿未授权转载!!!
$test=new b();
虎ij_pv泰kgyqi克fvph新dhhu闻so网i版权所有,请勿未授权转载!!!
运行结果:
虎kpyfg泰mks克nigtw新zczlx闻i网_oof版权所有,请勿未授权转载!!!
b
虎ucank泰d克jqxu新x闻wrr网aph版权所有,请勿未授权转载!!!
虎yxuzy泰r克xdcjc新bym闻w网c版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎gipt泰lm克vg新el闻d网pqany版权所有,请勿未授权转载!!!
虎edlab泰dda克pug新k闻dn网ea版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎gbomi泰ykkqr克edlat新n闻rz_t网bth版权所有,请勿未授权转载!!!
include 'a.php';
虎g泰l克kh_d新hu闻ibygn网sycbz版权所有,请勿未授权转载!!!
class b extends a{
虎z泰v_zhn克ary新aejkt闻pg网jeccl版权所有,请勿未授权转载!!!
function __construct(){
虎bxtf泰n克kvdig新bfpjb闻z网rib版权所有,请勿未授权转载!!!
parent::__construct();
虎fq泰zal克t新t闻tgc_y网dw版权所有,请勿未授权转载!!!
echo 'b';
虎vusje泰tce克hbsaf新xn闻epktx网uk版权所有,请勿未授权转载!!!
}
虎o泰e克fwj新gcil闻es网w版权所有,请勿未授权转载!!!
}
虎da_e泰r克hwgd新u闻g网uoxh版权所有,请勿未授权转载!!!
虎gwq泰jxq克t新gpjch闻tns网bz版权所有,请勿未授权转载!!!
$test=new b();
虎i泰x_ptn克kp新czs闻dhk网bz版权所有,请勿未授权转载!!!
那么输出结果是:
虎_mj_泰p克k新otaj闻_网vuj版权所有,请勿未授权转载!!!
ab
虎xwkja泰xevaa克tivq新uo闻llnhq网y版权所有,请勿未授权转载!!!
虎xj泰wm克mz新kbojp闻td网p_版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎v泰xfds克ha新_j_r闻take网acwis版权所有,请勿未授权转载!!!
虎x泰wcrou克x新zgqn闻jpp网bdix版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎vll泰uafp克s新z闻ov网nqzc版权所有,请勿未授权转载!!!
虎e泰by克zxus新vela闻rfs网hlmu版权所有,请勿未授权转载!!!
BaseAction.class.php
虎jzmkf泰z克z新cmstj闻a_upv网lg版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎c泰frv克tssr新r闻pbkes网eugc版权所有,请勿未授权转载!!!
public function _initialize(){
虎bglb泰y克kxp新bd闻vcbfn网nw版权所有,请勿未授权转载!!!
echo 'baseAction';
虎vopv泰qx克d新frfw闻vvumw网gy版权所有,请勿未授权转载!!!
}
虎fjidx泰j_c克w新u闻xzhk网zuo版权所有,请勿未授权转载!!!
}
虎ook泰tgfk克cvc新kpwue闻bn网ocl版权所有,请勿未授权转载!!!
虎rep泰k克vra新weize闻_kvln网c版权所有,请勿未授权转载!!!
IndexAction.class.php
虎eoo泰ppi克_b新fmds闻tpfi网k版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎vwwvw泰uh克jyp_新gcmjt闻hq网qkrtp版权所有,请勿未授权转载!!!
public function (){
虎cmiba泰__apx克fij新po闻gltag网sr版权所有,请勿未授权转载!!!
echo 'indexAction';
虎ks泰c克ywnw新zyfc闻t网m版权所有,请勿未授权转载!!!
}
虎fyvvv泰rfvz克ifgme新u闻v网bz版权所有,请勿未授权转载!!!
}
虎xosdh泰vypj克jbvkm新q闻qr网y_ypk版权所有,请勿未授权转载!!!
虎_su泰awh_克wv新u闻z网qc版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎svkxg泰csa克brir新ux闻_网rpj版权所有,请勿未授权转载!!!
baseActionindexAcition
虎jzuy泰grsdu克jn_新i闻lhlyi网w版权所有,请勿未授权转载!!!
虎xrogj泰sdg克ua_in新hn闻_fk网ouo版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎olqq泰gzwtk克u新feyi闻ler网cndkw版权所有,请勿未授权转载!!!
虎jwzkk泰t克_qc新xx闻bk网sg_版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎p泰r克uj新g闻qsu网xkpf版权所有,请勿未授权转载!!!
Δήλωση: όλα τα άρθρα / τα σχέδια που αναδημοσιεύονται στον δικτυακό τόπο έχουν ως σκοπό τη διαβίβαση περισσότερων πληροφοριών και τη διευκόλυνση της συζήτησης, πράγμα που δεν σημαίνει ότι ο δικτυακός τόπος, ο οικοδεσπότης και ο διοργανωτής συμφωνούν με τις απόψεις τους ή επιβεβαιώνουν τη γνησιότητα του περιεχομένου τους. Τα περιεχόμενα των άρθρων είναι μόνο για αναφορά. Εάν παραβιαστούν τα δικαιώματα του αρχικού συγγραφέα, επικοινωνήστε με τον διαχειριστή του δικτυακού τόπου.
Λίστα σχολίων
-
Δεν υπάρχουν δεδομένα