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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 創建core/Controller.php ``` <?php namespace core; class Controller { protected $middleware = []; // 獲取中間件 public function getMiddleware() { return $this->middleware; } // 調用控制器方法 為了不限制參數 // 所以方法設不設置$request 都無所謂 public function callAction($method, $parameters) { return call_user_func_array([$this, $method], $parameters); } } ``` ## 創建app/controller/UserController.php ``` <?php namespace App\controller; use App\middleware\ControllerMiddleWare; use core\Controller; use core\request\RequestInterface; // 繼承基礎控制器 class UserController extends Controller { protected $middleware = [ // 這個控制器的中間件 ControllerMiddleWare::class ]; public function index(RequestInterface $request) { return [ 'method' => $request->getMethod(), 'url' => $request->getUri() ]; } public function index2() { } } ``` ## 編輯core/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']; if(! $route['action']['uses'] instanceof \Closure){ // 不是閉包 就是控制器了 $action = $route['action']; $uses = explode('@',$action['uses']); $controller = $action['namespace'].'\\'.$uses[0]; // 控制器 $method = $uses[1]; // 執行的方法 $controllerInstance = new $controller; $middleware = array_merge($middleware,$controllerInstance->getMiddleware()); // 合并控制器中間件 $routerDispatch = function ($request) use($route, $controllerInstance, $method){ return $controllerInstance->callAction($method,[ $request ]); }; } return \App::getContainer()->get('pipeline')->create()->setClass( $middleware )->run($routerDispatch)($request); } ``` ## 測試下 ### 創建app\middleware\ControllerMiddleWare.php 因為`UserController` 調用 這個中間件,所以要創建。 ``` <?php namespace App\middleware; use core\request\RequestInterface; class ControllerMiddleWare { public function handle(RequestInterface $request, \Closure $next) { echo "<hr/>controller middleware<hr/>"; return $next($request); } } ``` ### 運行 ![](https://img.kancloud.cn/97/af/97af9082e06d49664711b2abe6bafd58_606x133.png)![](https://img.kancloud.cn/f5/a4/f5a4822f5712c514f5af82f8d7d33fc4_690x290.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>

                              哎呀哎呀视频在线观看