【TP3.2】詳解_initialize() 和 __construct() 的區別和聯系
阿新 • • 發佈:2018-04-26
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() 的區別和聯系