国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Jinkey / 3898人閱讀

摘要:延伸如果子類繼承了父類后,重寫了構造方法,注意調用父類的哦,否則是使用不了的,代碼如下其他代碼總結一個簡單的小設計,這里拋磚引玉的分析下,希望對大家有幫助。

前言

_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

相關文章

  • ThinkPHP5踩過的坑

    摘要:函數在框架初始化方法中無效當初做權限控制在判斷是否有權限如果無權限就執行跳轉跳轉的函數是但是無論如何都無法跳轉出去當時的版本是手冊還不太完善后來得知必須得才可以跳轉重定向完整代碼分頁參數的問題如果是普通分頁沒毛病但是分頁后面有其他參數比 01:redirect函數在框架初始化方法中無效當初做權限控制,在initialize判斷是否有權限,如果無權限就執行跳轉,跳轉的函數是redirec...

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

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

    stormzhang 評論0 收藏0
  • 基于ThinkPHP5拿來即用高性能后臺管理系統

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

    894974231 評論0 收藏0
  • 基于ThinkPHP5拿來即用高性能后臺管理系統

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

    SHERlocked93 評論0 收藏0

發表評論

0條評論

Jinkey

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<