成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

ThinkPHP5之 _initialize() 初始化方法詳解

Jinkey / 3907人閱讀

摘要:延伸如果子類(lèi)繼承了父類(lèi)后,重寫(xiě)了構(gòu)造方法,注意調(diào)用父類(lèi)的哦,否則是使用不了的,代碼如下其他代碼總結(jié)一個(gè)簡(jiǎn)單的小設(shè)計(jì),這里拋磚引玉的分析下,希望對(duì)大家有幫助。

前言

_initialize() 這個(gè)方法在官方手冊(cè)里是這樣說(shuō)的:

如果你的控制器類(lèi)繼承了 hinkController類(lèi)的話,可以定義控制器初始化方法_initialize,在該控制器的方法調(diào)用之前首先執(zhí)行。

其實(shí)不止5,在之前的版本中也出現(xiàn)過(guò),這里和大家聊一聊它的實(shí)現(xiàn)過(guò)程吧。

示例

下面是官方手冊(cè)上給的示例:

namespace appindexcontroller;

use thinkController;

class Index extends Controller
{

    public function _initialize()
    {
        echo "init
"; } public function hello() { return "hello"; } public function data() { return "data"; } }

如果訪問(wèn)

http://localhost/index.php/index/Index/hello

會(huì)輸出

init
hello

如果訪問(wèn)

http://localhost/index.php/index/Index/data

會(huì)輸出

init
data
分析

因?yàn)槭褂帽仨氁^承 hinkController類(lèi),加上這個(gè)又是初始化,所以我們首先就想到了 hinkController類(lèi)中的 __construct(),一起來(lái)看代碼:

/**
     * 架構(gòu)函數(shù)
     * @param Request    $request     Request對(duì)象
     * @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è)構(gòu)造函數(shù)中,有一個(gè)控制器初始化的注釋?zhuān)旅娲a就是實(shí)現(xiàn)這個(gè)初始化的關(guān)鍵:

// 控制器初始化
if (method_exists($this, "_initialize")) {
    $this->_initialize();
}

真相出現(xiàn)了有木有?!

其實(shí)就是當(dāng)子類(lèi)繼承父類(lèi)后,在沒(méi)有重寫(xiě)構(gòu)造函數(shù)的情況下,也自然繼承了父類(lèi)的構(gòu)造函數(shù),相應(yīng)的,進(jìn)行判斷當(dāng)前類(lèi)中是否存在 _initialize 方法,有的話就執(zhí)行,這就是所謂的控制器初始化的原理。

延伸

如果子類(lèi)繼承了父類(lèi)后,重寫(xiě)了構(gòu)造方法,注意調(diào)用父類(lèi)的__construct()哦,否則是使用不了的,代碼如下:

public function __construct()
{
    parent::__construct();
    ...其他代碼...
}
總結(jié)

一個(gè)簡(jiǎn)單的小設(shè)計(jì),這里拋磚引玉的分析下,希望對(duì)大家有幫助。

鏈接

相關(guān)手冊(cè)頁(yè)面:http://www.kancloud.cn/manual/thinkphp5/118049

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21987.html

相關(guān)文章

  • ThinkPHP5踩過(guò)的坑

    摘要:函數(shù)在框架初始化方法中無(wú)效當(dāng)初做權(quán)限控制在判斷是否有權(quán)限如果無(wú)權(quán)限就執(zhí)行跳轉(zhuǎn)跳轉(zhuǎn)的函數(shù)是但是無(wú)論如何都無(wú)法跳轉(zhuǎn)出去當(dāng)時(shí)的版本是手冊(cè)還不太完善后來(lái)得知必須得才可以跳轉(zhuǎn)重定向完整代碼分頁(yè)參數(shù)的問(wèn)題如果是普通分頁(yè)沒(méi)毛病但是分頁(yè)后面有其他參數(shù)比 01:redirect函數(shù)在框架初始化方法中無(wú)效當(dāng)初做權(quán)限控制,在initialize判斷是否有權(quán)限,如果無(wú)權(quán)限就執(zhí)行跳轉(zhuǎn),跳轉(zhuǎn)的函數(shù)是redirec...

    enali 評(píng)論0 收藏0
  • 解讀 thinkphp5 源碼(一):自動(dòng)加載

    摘要:索性讀一下它的源碼。行載入類(lèi)載入類(lèi),這個(gè)類(lèi)比較重要,實(shí)現(xiàn)了自動(dòng)加載。注冊(cè)錯(cuò)誤和異常處理機(jī)制加載慣例配置文件接下來(lái)我們看一下自動(dòng)加載的實(shí)現(xiàn)方法。所以借助此函數(shù)可以達(dá)到自動(dòng)加載。博客鏈接解讀源碼一自動(dòng)加載 聽(tīng)說(shuō) TP5 已經(jīng) RC4 了,曾經(jīng)在 RC3 的時(shí)候用它寫(xiě)過(guò)一個(gè)小東西。官方說(shuō)從 RC4 以后改動(dòng)不是太大。索性讀一下它的源碼。然后順便記錄一下,如有錯(cuò)漏,請(qǐng)路過(guò)大神多多指正! 入口 ...

    stormzhang 評(píng)論0 收藏0
  • 基于ThinkPHP5拿來(lái)即用高性能后臺(tái)管理系統(tǒng)

    摘要:數(shù)據(jù)庫(kù)文件已經(jīng)上傳,安裝配置就可以使用簡(jiǎn)稱(chēng)即基于的后臺(tái)管理系統(tǒng)官方文檔地址在線體驗(yàn)地址賬戶(hù)密碼線上倉(cāng)庫(kù)在線地址源代碼下載克隆直接下載本地部署運(yùn)行環(huán)境要求建議配置虛擬域名若不清楚,請(qǐng)自行解決之,方便接下來(lái)開(kāi)展你的開(kāi)發(fā)工作。 喜歡就Star,不只是Fork; 想要分享的動(dòng)機(jī)才是驅(qū)動(dòng)力,而技術(shù)僅僅是一種方法。 數(shù)據(jù)庫(kù)文件已經(jīng)上傳,安裝配置就可以使用 showImg(https://seg...

    894974231 評(píng)論0 收藏0
  • 基于ThinkPHP5拿來(lái)即用高性能后臺(tái)管理系統(tǒng)

    摘要:數(shù)據(jù)庫(kù)文件已經(jīng)上傳,安裝配置就可以使用簡(jiǎn)稱(chēng)即基于的后臺(tái)管理系統(tǒng)官方文檔地址在線體驗(yàn)地址賬戶(hù)密碼線上倉(cāng)庫(kù)在線地址源代碼下載克隆直接下載本地部署運(yùn)行環(huán)境要求建議配置虛擬域名若不清楚,請(qǐng)自行解決之,方便接下來(lái)開(kāi)展你的開(kāi)發(fā)工作。 喜歡就Star,不只是Fork; 想要分享的動(dòng)機(jī)才是驅(qū)動(dòng)力,而技術(shù)僅僅是一種方法。 數(shù)據(jù)庫(kù)文件已經(jīng)上傳,安裝配置就可以使用 showImg(https://seg...

    SHERlocked93 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<