摘要:延伸如果子類繼承了父類后,重寫了構(gòu)造方法,注意調(diào)用父類的哦,否則是使用不了的,代碼如下其他代碼總結(jié)一個簡單的小設(shè)計(jì),這里拋磚引玉的分析下,希望對大家有幫助。
前言
_initialize() 這個方法在官方手冊里是這樣說的:
如果你的控制器類繼承了 hinkController類的話,可以定義控制器初始化方法_initialize,在該控制器的方法調(diào)用之前首先執(zhí)行。
其實(shí)不止5,在之前的版本中也出現(xiàn)過,這里和大家聊一聊它的實(shí)現(xiàn)過程吧。
示例下面是官方手冊上給的示例:
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分析
因?yàn)槭褂帽仨氁^承 hinkController類,加上這個又是初始化,所以我們首先就想到了 hinkController類中的 __construct(),一起來看代碼:
/** * 架構(gòu)函數(shù) * @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); } } }
細(xì)心的你一定注意到了,在整個構(gòu)造函數(shù)中,有一個控制器初始化的注釋,而下面代碼就是實(shí)現(xiàn)這個初始化的關(guān)鍵:
// 控制器初始化 if (method_exists($this, "_initialize")) { $this->_initialize(); }
真相出現(xiàn)了有木有?!
其實(shí)就是當(dāng)子類繼承父類后,在沒有重寫構(gòu)造函數(shù)的情況下,也自然繼承了父類的構(gòu)造函數(shù),相應(yīng)的,進(jìn)行判斷當(dāng)前類中是否存在 _initialize 方法,有的話就執(zhí)行,這就是所謂的控制器初始化的原理。
延伸如果子類繼承了父類后,重寫了構(gòu)造方法,注意調(diào)用父類的__construct()哦,否則是使用不了的,代碼如下:
public function __construct() { parent::__construct(); ...其他代碼... }總結(jié)
一個簡單的小設(shè)計(jì),這里拋磚引玉的分析下,希望對大家有幫助。
鏈接相關(guān)手冊頁面:http://www.kancloud.cn/manual/thinkphp5/118049
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/21987.html
摘要:函數(shù)在框架初始化方法中無效當(dāng)初做權(quán)限控制在判斷是否有權(quán)限如果無權(quán)限就執(zhí)行跳轉(zhuǎn)跳轉(zhuǎn)的函數(shù)是但是無論如何都無法跳轉(zhuǎn)出去當(dāng)時的版本是手冊還不太完善后來得知必須得才可以跳轉(zhuǎn)重定向完整代碼分頁參數(shù)的問題如果是普通分頁沒毛病但是分頁后面有其他參數(shù)比 01:redirect函數(shù)在框架初始化方法中無效當(dāng)初做權(quán)限控制,在initialize判斷是否有權(quán)限,如果無權(quán)限就執(zhí)行跳轉(zhuǎn),跳轉(zhuǎn)的函數(shù)是redirec...
摘要:索性讀一下它的源碼。行載入類載入類,這個類比較重要,實(shí)現(xiàn)了自動加載。注冊錯誤和異常處理機(jī)制加載慣例配置文件接下來我們看一下自動加載的實(shí)現(xiàn)方法。所以借助此函數(shù)可以達(dá)到自動加載。博客鏈接解讀源碼一自動加載 聽說 TP5 已經(jīng) RC4 了,曾經(jīng)在 RC3 的時候用它寫過一個小東西。官方說從 RC4 以后改動不是太大。索性讀一下它的源碼。然后順便記錄一下,如有錯漏,請路過大神多多指正! 入口 ...
摘要:數(shù)據(jù)庫文件已經(jīng)上傳,安裝配置就可以使用簡稱即基于的后臺管理系統(tǒng)官方文檔地址在線體驗(yàn)地址賬戶密碼線上倉庫在線地址源代碼下載克隆直接下載本地部署運(yùn)行環(huán)境要求建議配置虛擬域名若不清楚,請自行解決之,方便接下來開展你的開發(fā)工作。 喜歡就Star,不只是Fork; 想要分享的動機(jī)才是驅(qū)動力,而技術(shù)僅僅是一種方法。 數(shù)據(jù)庫文件已經(jīng)上傳,安裝配置就可以使用 showImg(https://seg...
摘要:數(shù)據(jù)庫文件已經(jīng)上傳,安裝配置就可以使用簡稱即基于的后臺管理系統(tǒng)官方文檔地址在線體驗(yàn)地址賬戶密碼線上倉庫在線地址源代碼下載克隆直接下載本地部署運(yùn)行環(huán)境要求建議配置虛擬域名若不清楚,請自行解決之,方便接下來開展你的開發(fā)工作。 喜歡就Star,不只是Fork; 想要分享的動機(jī)才是驅(qū)動力,而技術(shù)僅僅是一種方法。 數(shù)據(jù)庫文件已經(jīng)上傳,安裝配置就可以使用 showImg(https://seg...
閱讀 981·2021-09-03 10:42
閱讀 1573·2019-08-30 15:56
閱讀 1508·2019-08-29 17:27
閱讀 934·2019-08-29 15:25
閱讀 3259·2019-08-26 18:27
閱讀 2548·2019-08-26 13:41
閱讀 1954·2019-08-26 10:39
閱讀 1748·2019-08-23 18:36