PHP中__construct()和_initialize()的区别?

__construct()是php内置的构造函数,__initialize()是php框架中定义的(如thinkphp),用法基本一致。

在tp中若父类和子类都有_initialize,则只调用子类的_initialize,并不会自动调用父类_initialize

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

_initialize()是ThinkPHP定义的控制器初始化函数。功能类似于php原生的__construct。 
网上很多人说用_initialize就可以不用写parent::__construct了,这种说话是不对的。 
只有当你的控制器继承了think\Controller时,你可以直接在控制器中使用_initialize(),此时会执行父类的__construct和当前类的_initialize。 
当你的控制器是作为think\Controller的子类的子类时,只会执行think\Controller的__construct和当前类的_initialize,并不会执行父类的_initialize,所以此时还是需要加parent::_initialize这句才行。

其实think\Controller只是在__construct中加了一句:$this->_initialize()而已。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值