«
_initialize__construct

时间:2021-11-17    作者:Thinkphp    分类: ThinkPHP


加上这个。直接访问控制器的时候是先执行这个函数里面的代码,然后再去执行别的函数的代码

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()而已。

标签: thinkphp