摘要:延伸如果子類繼承了父類后,重寫了構造方法,注意調用父類的哦,否則是使用不了的,代碼如下其他代碼總結一個簡單的小設計,這里拋磚引玉的分析下,希望對大家有幫助。
前言
_initialize() 這個方法在官方手冊里是這樣說的:
如果你的控制器類繼承了 hinkController類的話,可以定義控制器初始化方法_initialize,在該控制器的方法調用之前首先執行。
其實不止5,在之前的版本中也出現過,這里和大家聊一聊它的實現過程吧。
示例下面是官方手冊上給的示例:
namespace appindexcontroller; use thinkController; class Index extends Controller { public function _initialize() { echo "init
"; } public function hello() { return "hello"; } public function data() { return "data"; } }
如果訪問
http://localhost/index.php/index/Index/hello
會輸出
init hello
如果訪問
http://localhost/index.php/index/Index/data
會輸出
init data分析
因為使用必須要繼承 hinkController類,加上這個又是初始化,所以我們首先就想到了 hinkController類中的 __construct(),一起來看代碼:
/** * 架構函數 * @param Request $request Request對象 * @access public */ public function __construct(Request $request = null) { if (is_null($request)) { $request = Request::instance(); } $this->view = View::instance(Config::get("template"), Config::get("view_replace_str")); $this->request = $request; // 控制器初始化 if (method_exists($this, "_initialize")) { $this->_initialize(); } // 前置操作方法 if ($this->beforeActionList) { foreach ($this->beforeActionList as $method => $options) { is_numeric($method) ? $this->beforeAction($options) : $this->beforeAction($method, $options); } } }
細心的你一定注意到了,在整個構造函數中,有一個控制器初始化的注釋,而下面代碼就是實現這個初始化的關鍵:
// 控制器初始化 if (method_exists($this, "_initialize")) { $this->_initialize(); }
真相出現了有木有?!
其實就是當子類繼承父類后,在沒有重寫構造函數的情況下,也自然繼承了父類的構造函數,相應的,進行判斷當前類中是否存在 _initialize 方法,有的話就執行,這就是所謂的控制器初始化的原理。
延伸如果子類繼承了父類后,重寫了構造方法,注意調用父類的__construct()哦,否則是使用不了的,代碼如下:
public function __construct() { parent::__construct(); ...其他代碼... }總結
一個簡單的小設計,這里拋磚引玉的分析下,希望對大家有幫助。
鏈接相關手冊頁面:http://www.kancloud.cn/manual/thinkphp5/118049
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21987.html
摘要:函數在框架初始化方法中無效當初做權限控制在判斷是否有權限如果無權限就執行跳轉跳轉的函數是但是無論如何都無法跳轉出去當時的版本是手冊還不太完善后來得知必須得才可以跳轉重定向完整代碼分頁參數的問題如果是普通分頁沒毛病但是分頁后面有其他參數比 01:redirect函數在框架初始化方法中無效當初做權限控制,在initialize判斷是否有權限,如果無權限就執行跳轉,跳轉的函數是redirec...
摘要:索性讀一下它的源碼。行載入類載入類,這個類比較重要,實現了自動加載。注冊錯誤和異常處理機制加載慣例配置文件接下來我們看一下自動加載的實現方法。所以借助此函數可以達到自動加載。博客鏈接解讀源碼一自動加載 聽說 TP5 已經 RC4 了,曾經在 RC3 的時候用它寫過一個小東西。官方說從 RC4 以后改動不是太大。索性讀一下它的源碼。然后順便記錄一下,如有錯漏,請路過大神多多指正! 入口 ...
摘要:數據庫文件已經上傳,安裝配置就可以使用簡稱即基于的后臺管理系統官方文檔地址在線體驗地址賬戶密碼線上倉庫在線地址源代碼下載克隆直接下載本地部署運行環境要求建議配置虛擬域名若不清楚,請自行解決之,方便接下來開展你的開發工作。 喜歡就Star,不只是Fork; 想要分享的動機才是驅動力,而技術僅僅是一種方法。 數據庫文件已經上傳,安裝配置就可以使用 showImg(https://seg...
摘要:數據庫文件已經上傳,安裝配置就可以使用簡稱即基于的后臺管理系統官方文檔地址在線體驗地址賬戶密碼線上倉庫在線地址源代碼下載克隆直接下載本地部署運行環境要求建議配置虛擬域名若不清楚,請自行解決之,方便接下來開展你的開發工作。 喜歡就Star,不只是Fork; 想要分享的動機才是驅動力,而技術僅僅是一種方法。 數據庫文件已經上傳,安裝配置就可以使用 showImg(https://seg...
閱讀 905·2021-09-03 10:42
閱讀 1516·2019-08-30 15:56
閱讀 1451·2019-08-29 17:27
閱讀 877·2019-08-29 15:25
閱讀 3163·2019-08-26 18:27
閱讀 2485·2019-08-26 13:41
閱讀 1893·2019-08-26 10:39
閱讀 1583·2019-08-23 18:36