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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 創建core/PipleLine.php 中間件實現主要是靠 `PipeLine` ``` <?php namespace core; class PipeLine { // 所有要執行的類 protected $classes = []; // 類的方法名稱 protected $handleMethod = 'handle'; // 因為容器的單例的,所以要創建一個新的 對象 public function create() { return clone $this; } // 沒啥用 但是遵守原則而已 public function setHandleMethod($method) { $this->handleMethod = $method; return $this; } public function setClass($class) { $this->classes = $class; return $this; } // 傳遞閉包 運行管道 // 這個代碼過于抽象 學習文章: https://segmentfault.com/a/1190000017792800 public function run(\Closure $initial) { return array_reduce( array_reverse($this->classes),function($res, $currClass){ return function ($request) use ($res,$currClass) { return (new $currClass)->{$this->handleMethod}($request,$res); }; },$initial); } } ``` ## 代碼助你理解array_reduce ``` $datas = [ ['num' => 2, 'price' => 15], ['num' => 4, 'price' => 10], ]; ``` 現在要計算總價, `foreach`操作: ``` $sum = 0; foreach($datas as $data) $sum += $data['price'] * $data['num']; echo $sum; // 70 ``` 用 `array_reduce` ``` echo array_reduce($datas, function($sum = 0,$data){ return $sum += $data['num'] * $data['price']; }); // 70 ``` `array_reduce` 只是更簡潔的寫法而已,你大可用 `foreach` 來代替它。 (一般不會代替把,都喜歡簡潔) ## 綁定pipeline ![](https://img.kancloud.cn/62/83/6283621cb580906cc7a98ae98c31244d_511x263.png) ## 編輯RouteCollection.php 編輯 `dispatch` 方法 ``` // 根據request執行路由 public function dispatch(RequestInterface $request) { $method = $request->getMethod(); $uri = $request->getUri(); $this->route_index = $method . $uri; $route = $this->getCurrRoute(); if(! $route) return 404; $middleware = $route['action']['middleware'] ?? []; $routerDispatch = $route['action']['uses']; return \App::getContainer()->get('pipeline')->create()->setClass( $middleware )->run($routerDispatch)($request); } } ``` ![](https://img.kancloud.cn/af/8b/af8b7eb5584c11b7b73130c2be6bb09f_449x145.png) ## 創建app/middleware/WebMiddleWare.php ``` <?php namespace App\middleware; class WebMiddleWare { public function handle($request,\Closure $next) { echo "web middleware"; return $next($request); } } ``` ### 編輯routes/web.php ![](https://img.kancloud.cn/0d/88/0d88bbcb006463112c36d7f7afb462ca_745x181.png) ![](https://img.kancloud.cn/f5/ee/f5ee28f4560c79372eb808c5a7c98efc_604x223.png) ### 在路由組添加中間件 ![](https://img.kancloud.cn/3b/86/3b86f365d21ccded7749bb6578971fcc_644x226.png) ![](https://img.kancloud.cn/60/18/601899d2def535574d91ce2d594c6748_864x262.png) ![](https://img.kancloud.cn/22/ee/22ee2bace19bf474bd3f9760553dcbb5_659x243.png)
                  <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>

                              哎呀哎呀视频在线观看