1. 程式人生 > >【TP3.2】詳解_initialize() 和 __construct() 的區別和聯系

【TP3.2】詳解_initialize() 和 __construct() 的區別和聯系

instance ins 執行 構造方法 ces 實例化 direct control 初始化

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() 方法,執行代碼操作。

【TP3.2】詳解_initialize() 和 __construct() 的區別和聯系