虎泰克博客

ThinkPHP中_initialize()和__construct()的不同


ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函

ThinkPHP中_initialize()和__construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?

虎nmwxt泰zdwmm克edpx新mc闻bqkr网gt版权所有,请勿未授权转载!!!

 

虎uz泰rvdv克ipd新ddg闻ji网tzcu版权所有,请勿未授权转载!!!

在网上搜索,很多答案是两者是一样的,ThinkPHP中_initialize()相当于php的__construct(),这么说是错误的,如果这样,tp为什么不用__construct(),而要自己弄一个ThinkPHP版的_initialize()构造函数呢?

虎tsn泰euf克bqk新mu闻p_网vfp版权所有,请勿未授权转载!!!

 

虎gt泰yqct克gkemj新aumyf闻kmc网wfji版权所有,请勿未授权转载!!!

自己试一下就知道两者的不同了。

虎n泰leqjo克qstnt新r闻igb网yw版权所有,请勿未授权转载!!!

 

虎yxluu泰y_uuv克oer新q闻c网oetvt版权所有,请勿未授权转载!!!

a.php

虎e泰k克m新vch闻edjk网y版权所有,请勿未授权转载!!!

class a{

虎al泰s克otn新uty闻yk网g版权所有,请勿未授权转载!!!

    function __construct(){

虎l泰bp克f新bm闻ilq网usvw版权所有,请勿未授权转载!!!

        echo 'a';

虎rtv泰fbmv克_sgq_新sd闻tgdd网wp版权所有,请勿未授权转载!!!

    }

虎acxtg泰mc克u新rcxw闻ed网aj版权所有,请勿未授权转载!!!

}

虎bsx泰e克zavag新qmzln闻aaifs网hhb_y版权所有,请勿未授权转载!!!

b.php(注意:这里构造函数没有调用parent::__construct();)

虎dzh泰ql克w_t新gn闻v_u网j_t版权所有,请勿未授权转载!!!

include 'a.php';

虎pwvkp泰qr克tln新gtpvb闻gak网te版权所有,请勿未授权转载!!!

class b extends a{

虎pgnzw泰joyam克bqwh新xmnk闻ku网y版权所有,请勿未授权转载!!!

    function __construct(){

虎rh泰zknzu克zl新drpvq闻byjp网o版权所有,请勿未授权转载!!!

        echo 'b';

虎wuk泰alcuj克ewgcx新pjpl闻ed网wcqr版权所有,请勿未授权转载!!!

    }

虎uzb泰cax克kqzz新k闻ah网ubngs版权所有,请勿未授权转载!!!

}

虎pu泰jo克smvye新ap闻v网fgc版权所有,请勿未授权转载!!!

 

虎w泰kvx克sp新ttr闻vl网cvz版权所有,请勿未授权转载!!!

$test=new b();

虎tbmmr泰e克r新myfda闻bi网eg版权所有,请勿未授权转载!!!

运行结果:

虎n泰h克mdfis新ebdqd闻w网cn版权所有,请勿未授权转载!!!

b

虎qyii_泰vjas克wl新sfaav闻j_rs网j版权所有,请勿未授权转载!!!


虎c泰utrb克sgzt_新l闻d网s版权所有,请勿未授权转载!!!

可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。

虎ms泰nsk_克poll新w闻fmv网indmj版权所有,请勿未授权转载!!!

 

虎yp泰yzbt克kt新lk闻tbj网spkk版权所有,请勿未授权转载!!!

如果b.php的构造函数加上parent::__construct(),就不同了。

虎u泰qmwmw克_新mhbp闻u网vxr版权所有,请勿未授权转载!!!

include 'a.php';

虎ijc泰qo克hep新cv闻fag网cnwrr版权所有,请勿未授权转载!!!

class b extends a{

虎cn泰hqg克j新x_k闻td网kyqp版权所有,请勿未授权转载!!!

    function __construct(){

虎azxm泰sbrj克dufx新pwwc闻gk网if版权所有,请勿未授权转载!!!

        parent::__construct();

虎z泰o克szcp新xv闻l网_tw版权所有,请勿未授权转载!!!

        echo 'b';

虎k泰papwl克fkf新yz闻po网xk版权所有,请勿未授权转载!!!

    }

虎x泰iom克g新tzljd闻gq_xn网xx版权所有,请勿未授权转载!!!

}

虎mwz泰nnagp克vty新qn闻cz网ubgqw版权所有,请勿未授权转载!!!

 

虎voe泰nml_克ihzp新ka闻hp网ccoxq版权所有,请勿未授权转载!!!

$test=new b();

虎j泰hwo克dk新l闻qbf网wi版权所有,请勿未授权转载!!!

那么输出结果是:

虎k泰tcrbx克t新ht闻c_t网vn_c版权所有,请勿未授权转载!!!

ab

虎nczew泰an克tmrav新l_f闻nvkv网t版权所有,请勿未授权转载!!!


虎w泰ui_px克jxh新ciev闻o网zkbb版权所有,请勿未授权转载!!!

此时才执行了父类的构造函数。

虎ayln泰mworo克v新t闻aoonu网z版权所有,请勿未授权转载!!!

 

虎azz泰kd克mw新e_ke闻w_l网o版权所有,请勿未授权转载!!!

我们再来看看thinkphp的_initialize()函数。

虎pypc_泰z克dmfx新k_mpa闻v网ok_d版权所有,请勿未授权转载!!!

 

虎iq泰scyi克szf新od闻e网kyrc_版权所有,请勿未授权转载!!!

BaseAction.class.php

虎k泰ifpc_克gg新qy闻ue网osy版权所有,请勿未授权转载!!!

class BaseAction extends Action{

虎mmd泰jnfhl克evb新eyapd闻_d网awk版权所有,请勿未授权转载!!!

    public function _initialize(){

虎lgu泰yx克p新ohqc闻jpb网z_版权所有,请勿未授权转载!!!

             echo 'baseAction';

虎i泰ig克vpg新mnpnx闻v网jegp版权所有,请勿未授权转载!!!

    }

虎ybk泰o克ps新ytbh闻fhw网bhw版权所有,请勿未授权转载!!!

}

虎gs泰wsqp克yjtmf新azqid闻bntg网urac版权所有,请勿未授权转载!!!


虎fkay泰w克xo新yoct闻ytqej网tfr版权所有,请勿未授权转载!!!

IndexAction.class.php

虎kbc泰vlmy克szb新xcjm闻gjzs网wisc版权所有,请勿未授权转载!!!

class IndexAction extends BaseAction{

虎ga泰pzyad克_m新e闻bu网qxdd版权所有,请勿未授权转载!!!

    public function (){

虎ivnrz泰obe克v新ml闻x网zazqo版权所有,请勿未授权转载!!!

             echo 'indexAction';

虎fz泰yrdw克mxd新zvwr闻v网kg版权所有,请勿未授权转载!!!

    }

虎rmu泰e_hk克ecvx新jeo闻k网cdeaf版权所有,请勿未授权转载!!!

}

虎oiicm泰pabna克m新tkj闻w网c版权所有,请勿未授权转载!!!


虎xi_泰mokzp克zkl新yejrn闻jsac_网stg版权所有,请勿未授权转载!!!

运行Index下的index方法,输出结果:

虎x泰exxk克jbqz_新rl闻dec网bixo版权所有,请勿未授权转载!!!

baseActionindexAcition

虎a泰hw克y新ryxk闻c网i版权所有,请勿未授权转载!!!


虎o泰osy克xpm_l新gghxz闻gr网acxan版权所有,请勿未授权转载!!!

可见,子类的_initialize()方法自动调用父类的_initialize()方法。而php的构造函数__construct(),如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();

虎j_泰kkvl克vfru新ospte闻mqo网gyk版权所有,请勿未授权转载!!!

 

虎_fpse泰hhgiy克do新cxx闻etukj网e版权所有,请勿未授权转载!!!

这就是ThinkPHP中_initialize()和__construct()的不同。

虎euj泰umlh克lqbdr新wx闻x网gr版权所有,请勿未授权转载!!!




성명: 본 사이트 에 옮 겨 실 린 문서 / 그림 등 원 고 는 모두 더 많은 정 보 를 전달 하고 토론 하 는 목적 에서 본 사이트 와 주최, 담당 부서 가 자신의 의견 을 찬성 하거나 그 내용 의 진실성 을 증명 하 는 것 을 의미 하지 않 는 다. 글 의 내용 은 참고 로 제공 하고 원작 자의 권 리 를 침해 하면 사이트 관리자 에 게 연락 하 십시오.

로그인 으로 논평 을 발표하다

평론 목록

    일시 데이터 없음