diff --git a/docs/source/changes-from-version-3.rst b/docs/source/changes-from-version-3.rst index 01617c5..4ff8bc7 100644 --- a/docs/source/changes-from-version-3.rst +++ b/docs/source/changes-from-version-3.rst @@ -1,7 +1,7 @@ Changes from Version 3 ====================== -If your project uses WellRESTed version 3, you can most likely upgrade to to version 4 without making any changes to your code. However, there are a few changes that may affect some users. +If your project uses WellRESTed version 3, you can most likely upgrade to to version 4 without making any changes to your code. However, there are a few changes that may affect some users, particularly users who have subclassed ``WellRESTed\Server`` or used custom implementations of other ``WellRESTed`` classes. Server Configuration ^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/source/router.rst b/docs/source/router.rst index 3b42ddc..64528fd 100644 --- a/docs/source/router.rst +++ b/docs/source/router.rst @@ -297,9 +297,9 @@ When a router is unable to match the route, it will delegate to the next middlew Router-specific Middleware ^^^^^^^^^^^^^^^^^^^^^^^^^^ -WellRESTed version 4 allows a Router to have a set of middleware to dispatch whenever it finds a route that matches. This middleware runs before the handler for the matched route, and only if a route matches. +WellRESTed allows a Router to have a set of middleware to dispatch whenever it finds a route that matches. This middleware runs before the handler for the matched route, and only when a route matches. -This feature allows you to build a site where some sections use certain middleware and other do not. For example, suppose your site has a public section that does not require authentication and a section that does require authentication. We can use a different router for each section, and provide authentication middleware on only the router for the private area. +This feature allows you to build a site where some sections use certain middleware and other do not. For example, suppose your site has a public section that does not require authentication and a private section that does. We can use a different router for each section, and provide authentication middleware on only the router for the private area. .. code-block:: php @@ -317,7 +317,7 @@ This feature allows you to build a site where some sections use certain middlewa $private = $server->createRouter(); // Authorizaiton middleware checks for an Authorization header and // responds 401 when the header is missing or invalid. - $private->addMiddleware($authorizaitonMiddleware); + $private->add($authorizaitonMiddleware); $private->register('GET', '/secret', $secretHandler); $private->register('GET', '/members-only', $otherHandler); $server->add($private); diff --git a/src/Routing/Router.php b/src/Routing/Router.php index 19beccc..d18d337 100644 --- a/src/Routing/Router.php +++ b/src/Routing/Router.php @@ -158,8 +158,10 @@ class Router } /** - * Push a new middleware onto the stack. Middleware for a router runs only - * when the router has a route matching the request. + * Push a new middleware onto the stack. + * + * Middleware for a router runs before the middleware and handler for the + * matched route and runs only when a route matched. * * $middleware may be: * - An instance implementing MiddlewareInterface @@ -172,7 +174,7 @@ class Router * @param mixed $middleware Middleware to dispatch in sequence * @return static */ - public function addMiddleware($middleware) + public function add($middleware) { $this->stack[] = $middleware; return $this; diff --git a/test/tests/integration/RoutingTest.php b/test/tests/integration/RoutingTest.php index 936e858..d0aed18 100644 --- a/test/tests/integration/RoutingTest.php +++ b/test/tests/integration/RoutingTest.php @@ -125,7 +125,7 @@ class RoutingTest extends TestCase public function testDispatchesMiddlewareSpecificToRouter() { $catRouter = $this->server->createRouter() - ->addMiddleware(new HeaderAdderMiddleware( + ->add(new HeaderAdderMiddleware( 'Content-type', 'application/cat')) ->register('GET', '/molly', new StringHandler('Molly')) ->register('GET', '/oscar', new StringHandler('Oscar')) @@ -133,7 +133,7 @@ class RoutingTest extends TestCase $this->server->add($catRouter); $dogRouter = $this->server->createRouter() - ->addMiddleware(new HeaderAdderMiddleware( + ->add(new HeaderAdderMiddleware( 'Content-type', 'application/dog')) ->register('GET', '/bear', new StringHandler('Bear')); $this->server->add($dogRouter); @@ -152,7 +152,7 @@ class RoutingTest extends TestCase public function testResponds404WhenNoRouteMatched() { $catRouter = $this->server->createRouter() - ->addMiddleware(new HeaderAdderMiddleware( + ->add(new HeaderAdderMiddleware( 'Content-type', 'application/cat')) ->register('GET', '/molly', new StringHandler('Molly')) ->register('GET', '/oscar', new StringHandler('Oscar')) @@ -160,7 +160,7 @@ class RoutingTest extends TestCase $this->server->add($catRouter); $dogRouter = $this->server->createRouter() - ->addMiddleware(new HeaderAdderMiddleware( + ->add(new HeaderAdderMiddleware( 'Content-type', 'application/dog')) ->register('GET', '/bear', new StringHandler('Bear')); $this->server->add($dogRouter); diff --git a/test/tests/unit/Routing/RouterTest.php b/test/tests/unit/Routing/RouterTest.php index dcf4aae..2309039 100644 --- a/test/tests/unit/Routing/RouterTest.php +++ b/test/tests/unit/Routing/RouterTest.php @@ -401,7 +401,7 @@ class RouterTest extends TestCase return $next($middlewareRequest, $middlewareResponse); }; - $this->router->addMiddleware($middleware); + $this->router->add($middleware); $this->router->register("GET", "/", "Handler"); $this->router->__invoke($this->request, $this->response, $this->next); @@ -429,7 +429,7 @@ class RouterTest extends TestCase $this->request = $this->request->withRequestTarget("/no/match"); - $this->router->addMiddleware($middleware); + $this->router->add($middleware); $this->router->register("GET", "/", "Handler"); $this->router->__invoke($this->request, $this->response, $this->next);