<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 鉤子 - 擴展框架核心 CodeIgniter 的鉤子特性提供了一種方法來修改框架的內部運作流程,而無需修改 核心文件。CodeIgniter 的運行遵循著一個特定的流程,你可以參考這個頁面的?[應用程序流程圖](http://codeigniter.org.cn/user_guide/overview/appflow.html)?。但是,有些時候你可能希望在 執行流程中的某些階段添加一些動作,例如在控制器加載之前或之后執行一段腳本, 或者在其他的某些位置觸發你的腳本。 ## 啟用鉤子 鉤子特性可以在?**application/config/config.php**?文件中全局的啟用或禁用, 設置下面這個參數: ~~~ $config['enable_hooks'] = TRUE; ~~~ ## 定義鉤子 鉤子是在?**application/config/hooks.php**?文件中被定義的,每個鉤子可以定義 為下面這樣的數組格式: ~~~ $hook['pre_controller'] = array( 'class' => 'MyClass', 'function' => 'Myfunction', 'filename' => 'Myclass.php', 'filepath' => 'hooks', 'params' => array('beer', 'wine', 'snacks') ); ~~~ **注意:** 數組的索引為你想使用的掛鉤點名稱,譬如上例中掛鉤點為 pre_controller , 下面會列出所有可用的掛鉤點。鉤子數組是一個關聯數組,數組的鍵值可以是 下面這些: * **class**?你希望調用的類名,如果你更喜歡使用過程式的函數的話,這一項可以留空。 * **function**?你希望調用的方法或函數的名稱。 * **filename**?包含你的類或函數的文件名。 * **filepath**?包含你的腳本文件的目錄名。 注意: 你的腳本必須放在?application/?目錄里面,所以 filepath 是相對?application/?目錄的路徑,舉例來說,如果你的腳本位于?application/hooks/?,那么 filepath 可以簡單的設置為 'hooks' ,如果你的腳本位于?application/hooks/utilities/?, 那么 filepath 可以設置為 'hooks/utilities' ,路徑后面不用加斜線。 * **params**?你希望傳遞給你腳本的任何參數,可選。 如果你使用 PHP 5.3 以上的版本,你也可以使用 lambda表達式(匿名函數或閉包)作為鉤子, 這樣語法更簡單: ~~~ $hook['post_controller'] = function() { /* do something here */ }; ~~~ ## 多次調用同一個掛鉤點 如果你想在同一個掛鉤點處添加多個腳本,只需要將鉤子數組變成二維數組即可,像這樣: ~~~ $hook['pre_controller'][] = array( 'class' => 'MyClass', 'function' => 'MyMethod', 'filename' => 'Myclass.php', 'filepath' => 'hooks', 'params' => array('beer', 'wine', 'snacks') ); $hook['pre_controller'][] = array( 'class' => 'MyOtherClass', 'function' => 'MyOtherMethod', 'filename' => 'Myotherclass.php', 'filepath' => 'hooks', 'params' => array('red', 'yellow', 'blue') ); ~~~ 注意數組索引后面多了個中括號: ~~~ $hook['pre_controller'][] ~~~ 這可以讓你在同一個掛鉤點處執行多個腳本,多個腳本執行順序就是你定義數組的順序。 ## 掛鉤點 以下是所有可用掛鉤點的一份列表: * **pre_system**?在系統執行的早期調用,這個時候只有 基準測試類 和 鉤子類 被加載了, 還沒有執行到路由或其他的流程。 * **pre_controller**?在你的控制器調用之前執行,所有的基礎類都已加載,路由和安全檢查也已經完成。 * **post_controller_constructor**?在你的控制器實例化之后立即執行,控制器的任何方法都還尚未調用。 * **post_controller**?在你的控制器完全運行結束時執行。 * **display_override**?覆蓋?_display()?方法,該方法用于在系統執行結束時向瀏覽器發送最終的頁面結果。 這可以讓你有自己的顯示頁面的方法。注意你可能需要使用?$this->CI?=&?get_instance()?方法來獲取 CI 超級對象,以及使用?$this->CI->output->get_output()?方法來 獲取最終的顯示數據。 * **cache_override**?使用你自己的方法來替代?[輸出類](http://codeigniter.org.cn/user_guide/libraries/output.html)?中的?_display_cache()?方法,這讓你有自己的緩存顯示機制。 * **post_system**?在最終的頁面發送到瀏覽器之后、在系統的最后期被調用。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看