【TP3.2】详解_initialize() 和 __construct() 的区别和联系

时间:2024-04-08 15:34:50

1、假设 一个AdminController.class.php 集成至 \Think\Controller 类,

我们来看看Controller.class.php的构造方法源码:

/**
* 架构函数 取得模板对象实例
* @access public
*/
public function __construct() {
Hook::listen('action_begin',$this->config);
//实例化视图类
$this->view = Think::instance('Think\View');
//控制器初始化
if(method_exists($this,'_initialize'))
$this->
_initialize();
}

再来看看AdminController.class.php的__initalize()方法:

protected function _initialize(){
// 获取当前用户ID
define('UID',is_login());
if( !UID ){// 还没登录 跳转到登录页面
$this->redirect('Public/login');
}
...
}

因为我们的AdminController.class.php 控制器没有写构造方法,所以它直接继承Controller的__construct()方法,

在对Admin控制器操作时候,每次都要先执行:__construct(),然后__construct() 调用它里面的 _initialize() 方法,执行代码操作。