ThinkPHP中_initialize()和__construct()的不同
随风飘扬 php 2016年07月11日13:53 1996
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函
ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
虎n泰f克rfqmx新y闻xd网eg_bh版权所有,请勿未授权转载!!!
虎jk泰vk克sowy新lyc闻ner网wj版权所有,请勿未授权转载!!!
在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?
虎sntbc泰isg克rkj新ujp_t闻if网par版权所有,请勿未授权转载!!!
虎_n泰vkfil克gh新adx闻r_网pu版权所有,请勿未授权转载!!!
自己试一下就知道两者的不同了。
虎_mjwu泰ldfa克q新t闻os网e版权所有,请勿未授权转载!!!
虎dzkaa泰_wd克wog新i闻u网xb_l版权所有,请勿未授权转载!!!
a.php
虎hsz泰bcx克s新de闻dost网stlst版权所有,请勿未授权转载!!!
class a{
虎tnbf泰lrue克pbn新wra闻hsyqr网juo版权所有,请勿未授权转载!!!
function __construct(){
虎ugzv泰tiep克kp新xs闻al网yz版权所有,请勿未授权转载!!!
echo 'a';
虎ipxiz泰kd克f新mw闻ifl网b版权所有,请勿未授权转载!!!
}
虎ee泰kojfy克y新qxb闻g网eh版权所有,请勿未授权转载!!!
}
虎gun泰idba克ycw新upki闻g网yol版权所有,请勿未授权转载!!!
b.php(注意:这里构造函数没有调用parent::__construct();)
虎d泰dsloe克mu新xflm闻tbi_v网cmc版权所有,请勿未授权转载!!!
include 'a.php';
虎b泰s克nrtsw新vfqaw闻elm网jnagu版权所有,请勿未授权转载!!!
class b extends a{
虎r泰bk克gjx新f闻ta网lo版权所有,请勿未授权转载!!!
function __construct(){
虎seao泰_dyd克oc新ibhh闻l网cu版权所有,请勿未授权转载!!!
echo 'b';
虎ksm泰xqufw克pf新m闻hm网w版权所有,请勿未授权转载!!!
}
虎_bb泰ahmf克z新isw闻zmdw网ryiz版权所有,请勿未授权转载!!!
}
虎zelxy泰uldgy克d新ijdxx闻_o网bgqu版权所有,请勿未授权转载!!!
虎biqc_泰abed克wsfn新u闻aqmb网sfzk版权所有,请勿未授权转载!!!
$test=new b();
虎vmxj泰a克f_g新ldqix闻qwt网ngzx版权所有,请勿未授权转载!!!
运行结果:
虎pw泰wshdd克f新dmn闻kipwq网umlb版权所有,请勿未授权转载!!!
b
虎zv_hd泰ip克jbt_新m闻iwje网dbtrp版权所有,请勿未授权转载!!!
虎ybk泰s克qpuip新woug闻a网s版权所有,请勿未授权转载!!!
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
虎cw泰m_克hlgz新s闻rd网ctc版权所有,请勿未授权转载!!!
虎csmoi泰knxca克qms新j闻lg网jhfu版权所有,请勿未授权转载!!!
如果b.php的构造函数加上parent::__construct(),就不同了。
虎tfx泰sl克j新ro闻izizu网r版权所有,请勿未授权转载!!!
include 'a.php';
虎yv泰r克k_nnm新qq闻gg网w版权所有,请勿未授权转载!!!
class b extends a{
虎ffj泰tp克q_oe新cutz闻fcn网pp版权所有,请勿未授权转载!!!
function __construct(){
虎g泰a克x新qqlth闻yuabn网opftw版权所有,请勿未授权转载!!!
parent::__construct();
虎wrrwz泰tsquh克wg新lcmfw闻y网eq版权所有,请勿未授权转载!!!
echo 'b';
虎oaqkr泰hh克im新vkbxy闻otyjd网pc版权所有,请勿未授权转载!!!
}
虎kkjh泰ggqyl克mylwy新uzzgx闻tqa_o网s版权所有,请勿未授权转载!!!
}
虎spe泰jcct克s新py闻kjdqf网_he版权所有,请勿未授权转载!!!
虎c泰sylv克nfccz新j闻c网hdkjf版权所有,请勿未授权转载!!!
$test=new b();
虎ezgxt泰kdovj克klgi新dl_f闻lvnz网ksblq版权所有,请勿未授权转载!!!
那么输出结果是:
虎e_r_q泰mbd克q新zzh闻i网iu版权所有,请勿未授权转载!!!
ab
虎hsjux泰xve克a_au新ea闻_afqy网x版权所有,请勿未授权转载!!!
虎lgkj泰h克krrdk新tgkz_闻ovebm网elj版权所有,请勿未授权转载!!!
此时才执行了父类的构造函数。
虎vx泰pk克mwhaf新po闻bn网nqd版权所有,请勿未授权转载!!!
虎o泰_bmw克d新hsdls闻j网vzih版权所有,请勿未授权转载!!!
我们再来看看thinkphp的_initialize()函数。
虎psw泰qx克byh新si闻dd网wtgy版权所有,请勿未授权转载!!!
虎zgsxi泰flolq克_yb_m新fz闻tioe网awm_j版权所有,请勿未授权转载!!!
BaseAction.class.php
虎nywj泰jt克p新hv闻wpzv网tcga版权所有,请勿未授权转载!!!
class BaseAction extends Action{
虎elmvp泰yswj克lxh新oa闻yzec网jzgtf版权所有,请勿未授权转载!!!
public function _initialize(){
虎bi泰yv克tj新whljy闻uwlma网dr版权所有,请勿未授权转载!!!
echo 'baseAction';
虎zuut泰nk克d新ktq闻o网rwqek版权所有,请勿未授权转载!!!
}
虎dbdo泰ul克nwev新rtxk闻q网n版权所有,请勿未授权转载!!!
}
虎g泰_w克rx新zimz闻rs网tny版权所有,请勿未授权转载!!!
虎eui泰yfh克mq新h闻vcsco网gl版权所有,请勿未授权转载!!!
IndexAction.class.php
虎sdke泰pv克n新dpwhv闻z网ux版权所有,请勿未授权转载!!!
class IndexAction extends BaseAction{
虎bq泰bu克z新xwzvq闻xxg网a版权所有,请勿未授权转载!!!
public function (){
虎lupil泰ddibx克hamhl新zhzdz闻k网ydsk版权所有,请勿未授权转载!!!
echo 'indexAction';
虎yqpc泰mw克vogvq新k_iii闻ghzhl网oapch版权所有,请勿未授权转载!!!
}
虎ug泰np克hexw新kxzs闻ejfa网vnnb版权所有,请勿未授权转载!!!
}
虎bbl泰g克ala新__c闻inx网maq版权所有,请勿未授权转载!!!
虎h泰sv克accn新getea闻cnbal网fhhb版权所有,请勿未授权转载!!!
运行Index下的index方法,输出结果:
虎lcdy泰gk克rwkc新bnd闻rpgc网stqx版权所有,请勿未授权转载!!!
baseActionindexAcition
虎hc泰yz克mmqdk新hruh闻nd网ac_b版权所有,请勿未授权转载!!!
虎xdglk泰l克_新za闻dbl网hbd版权所有,请勿未授权转载!!!
可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
虎su泰tml克c新itbn闻ffm网cq版权所有,请勿未授权转载!!!
虎odm泰najwu克z新hu闻ca网qxgaa版权所有,请勿未授权转载!!!
这就是ThinkPHP中_initialize()和__construct()的不同。
虎elz泰yoq克co新lfj闻xjzqs网eiae版权所有,请勿未授权转载!!!
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