浏览代码

Refactor away Router::getMatchingMiddleware()

By exposing the collection we can remove a low value method, and use
a more useful one.
Mark Story 9 年之前
父节点
当前提交
a01205c483
共有 3 个文件被更改,包括 5 次插入48 次删除
  1. 5 4
      src/Routing/Middleware/RoutingMiddleware.php
  2. 0 20
      src/Routing/Router.php
  3. 0 24
      tests/TestCase/Routing/RouterTest.php

+ 5 - 4
src/Routing/Middleware/RoutingMiddleware.php

@@ -14,6 +14,7 @@
  */
 namespace Cake\Routing\Middleware;
 
+use Cake\Http\MiddlewareQueue;
 use Cake\Http\Runner;
 use Cake\Routing\Exception\RedirectException;
 use Cake\Routing\Router;
@@ -27,7 +28,6 @@ use Zend\Diactoros\Response\RedirectResponse;
  */
 class RoutingMiddleware
 {
-
     /**
      * Apply routing and update the request.
      *
@@ -61,11 +61,12 @@ class RoutingMiddleware
                 $response->getHeaders()
             );
         }
-        $middleware = Router::getMatchingMiddleware($request->getUri()->getPath());
-        if (!$middleware) {
+        $matching = Router::getRouteCollection()->getMatchingMiddleware($request->getUri()->getPath());
+        if (!$matching) {
             return $next($request, $response);
         }
-        $middleware->add($next);
+        $matching[] = $next;
+        $middleware = new MiddlewareQueue($matching);
         $runner = new Runner();
 
         return $runner->run($middleware, $request, $response);

+ 0 - 20
src/Routing/Router.php

@@ -1070,26 +1070,6 @@ class Router
     }
 
     /**
-     * Get a MiddlewareQueue of middleware that matches the provided path.
-     *
-     * @param string $path The URL path to match for.
-     * @return \Cake\Http\MiddlewareQueue|null Either a queue or null if there are no matching middleware.
-     */
-    public static function getMatchingMiddleware($path)
-    {
-        if (!static::$initialized) {
-            static::_loadRoutes();
-        }
-
-        $middleware = static::$_collection->getMatchingMiddleware($path);
-        if ($middleware) {
-            return new MiddlewareQueue($middleware);
-        }
-
-        return null;
-    }
-
-    /**
      * Loads route configuration
      *
      * @return void

+ 0 - 24
tests/TestCase/Routing/RouterTest.php

@@ -3341,30 +3341,6 @@ class RouterTest extends TestCase
     }
 
     /**
-     * Test getting path specific middleware.
-     *
-     * @return void
-     */
-    public function testGetMatchingMiddleware()
-    {
-        Router::scope('/', function ($routes) {
-            $routes->connect('/articles', ['controller' => 'Articles']);
-            $routes->registerMiddleware('noop', function () {
-            });
-        });
-        Router::scope('/api/v1', function ($routes) {
-            $routes->applyMiddleware('noop');
-            $routes->connect('/articles', ['controller' => 'Articles', 'prefix' => 'Api']);
-        });
-        $result = Router::getMatchingMiddleware('/articles');
-        $this->assertNull($result);
-
-        $result = Router::getMatchingMiddleware('/api/v1/articles');
-        $this->assertInstanceOf(MiddlewareQueue::class, $result);
-        $this->assertCount(1, $result);
-    }
-
-    /**
      * Test getting the route collection
      *
      * @return void