<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 中間件注冊方法有3種 <br/> ## 項目配置文件 ~~~ // 項目配置文件Conf.php中有一項 MIDDLEWARE 定義項目默認中間件 return [ // 項目默認中間件注冊 'MIDDLEWARE' => [ // 前置,值為中間件的方法名 'BEFORE' => [ 'before', // 如果需要傳遞控制器類中定義的參數則 // 'before(...)' ], // 后置 'AFTER' => [ 'after' ] ], ]; ~~~ <br/> ## 路由中指定 ~~~ // 定義路由時第三個參數表示需要注冊的中間件 // 分組路由因為涉及到多個方法,所以可以指定需要排除執行前置或者后置中間件的方法 Router::group([ 'admin\/(.*)' ], [ // 指定該路由使用的前置中間件 'BEFORE' => [ [ 'name' => 'before_1(...)', // 指定需要排除該中間件的控制器方法名 'exclude' => [] ], [ 'name' => 'before_2(...)', // 指定需要排除該中間件的控制器方法名 'exclude' => [] ] ], // 指定該路由使用的后置中間件 'AFTER' => [ [ 'name' => 'after_1', // 指定需要排除該中間件的控制器方法名 'exclude' => [] ] ] ]); ~~~ <br/> ## 裝飾器 ~~~ // 可以直接在控制器方法的注釋中添加裝飾器來注冊中間件 namespace spi; use spi\Init; class Demo extends Init{ public function __construct() { parent::__construct(); } /** * *************************************************************************** * aaa -- 演示 * * 說明 : * * * 請求 : * @method : post * * 前置 : * @before : before * * 后置 : * @after : after * * 歷史 : * 2021/10/14 : created * *************************************************************************** */ public function aaa() { } } ~~~ <br/> ## 獲取中間件中的返回值 ~~~ // 如果在前置中間件中 return 值的話,則可以在控制器方法中獲取該值 // 例如,在Middleware.php中創建中間件test ...... /** * 創建一個中間件 * * $hash 字符串類型 本次訪問的hash值,可用于做緩存的KEY * $args 參數列表,很多時候我們需要在中間件里使用控制器中定義的私有、公有變量 * 則需要在注冊中間件的時候在名稱后加“(...)” */ public function test($hash, $args = []) { // $args['_PARAM']用來獲取裝飾器中傳遞的參數 print_r($args['_PARAM']); // 一系列邏輯處理 $result = ['data' => '處理的結果,需要返回到具體控制器中']; return $result; } // =========================================== // // 在控制器中注冊test前置中間件,控制器默認接收一個參數,就是前置中間件中返回的值 /** * *************************************************************************** * -- * * 說明 : * * * 前置 : * @before : before_1(...) * * 后置 : * * 歷史 : * 2021-10-11 : created * *************************************************************************** */ public function aaa(array $result = []) { print_r($result); } ~~~ 運行上例的結果就是中間件中return的數組 ![](https://box.kancloud.cn/1d34f068d87bba447d9600527b60ed72_548x45.png) <br/> ## 后置中間件獲取所有返回值 ~~~ // 后置中間件一般需要獲取前置和控制器中的處理結果,加工后再返回json數據出去 // 在控制器中return需要返回的數據,則后置中間件中可以通過第三個參數來獲取 /** * *************************************************************************** * -- * * 說明 : * * * 前置 : * @before before_1(...) * * 后置 : * @after after * * 歷史 : * 2021-10-11 : created * *************************************************************************** */ public function index(array $result = []) { return ['id' => 1]; } // 在middleware中創建后置中間件 /** * 創建一個中間件,默認提供3個參數 * * $hash 字符串類型 本次訪問的hash值,可用于做緩存的KEY * $args 參數列表,很多時候我們需要在中間件里使用控制器中定義的私有、公有變量 * 則需要在注冊中間件的時候在名稱后加“(...)” * $result 服務執行返回的結果,只有注冊為后置中間件才有該參數 */ public function after($hash, $args = [], $result = []) { echo '后置中間件'; // 此處的$result就是控制器中返回的 ['id' => 1] print_r($result); // 可以在此處對返回的結果加工再處理后統一返回 json($result); } ~~~ ## 立刻結束 ~~~ // 在前置中間件中 return TRUE,則可以立刻結束本次調用,不會繼續向下執行,可以用于一些權限驗證 ~~~
                  <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>

                              哎呀哎呀视频在线观看