Skip to content

Commit 97e71cd

Browse files
authored
Fix #43: Reverse middleware order in withMiddlewares()
1 parent 4d62a36 commit 97e71cd

File tree

4 files changed

+8
-7
lines changed

4 files changed

+8
-7
lines changed

CHANGELOG.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Yii Middleware Dispatcher Change Log
22

33

4-
## 1.0.1 under development
4+
## 2.0.0 under development
55

6-
- no changes in this release.
6+
- Chg #43: Reverse middleware order in `withMiddlewares()` (rustamwin)
77

88
## 1.0.0 November 08, 2021
99

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ After dispatcher instance obtained, it should be fed with some middleware:
5151

5252
```php
5353
$dispatcher = $dispatcher->withMiddlewares([
54+
TeapotAccessChecker::class,
5455
static function (): ResponseInterface {
5556
return new Response(418);
5657
},
@@ -81,7 +82,7 @@ $request = new ServerRequest('GET', '/teapot');
8182
$response = $dispatcher->dispatch($request, $this->getRequestHandler());
8283
```
8384

84-
Given a request dispatcher executes middleware in the set and produces response. Last specified middleware will be
85+
Given a request dispatcher executes middleware in the set and produces response. First specified middleware will be
8586
executed first. For each middleware
8687
`\Yiisoft\Middleware\Dispatcher\Event\BeforeMiddleware` and `\Yiisoft\Middleware\Dispatcher\Event\AfterMiddleware`
8788
events are triggered.

src/MiddlewareDispatcher.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public function dispatch(
7272
public function withMiddlewares(array $middlewareDefinitions): self
7373
{
7474
$new = clone $this;
75-
$new->middlewareDefinitions = $middlewareDefinitions;
75+
$new->middlewareDefinitions = array_reverse($middlewareDefinitions);
7676

7777
// Fixes a memory leak.
7878
unset($new->stack);

tests/MiddlewareDispatcherTest.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function testMiddlewareFullStackCalled(): void
6262
return new Response(200, [], null, '1.1', implode($request->getAttributes()));
6363
};
6464

65-
$dispatcher = $this->createDispatcher()->withMiddlewares([$middleware2, $middleware1]);
65+
$dispatcher = $this->createDispatcher()->withMiddlewares([$middleware1, $middleware2]);
6666

6767
$response = $dispatcher->dispatch($request, $this->getRequestHandler());
6868
$this->assertSame(200, $response->getStatusCode());
@@ -80,7 +80,7 @@ public function testMiddlewareStackInterrupted(): void
8080
return new Response(200);
8181
};
8282

83-
$dispatcher = $this->createDispatcher()->withMiddlewares([$middleware2, $middleware1]);
83+
$dispatcher = $this->createDispatcher()->withMiddlewares([$middleware1, $middleware2]);
8484

8585
$response = $dispatcher->dispatch($request, $this->getRequestHandler());
8686
$this->assertSame(403, $response->getStatusCode());
@@ -99,7 +99,7 @@ public function testEventsAreDispatched(): void
9999
return new Response();
100100
};
101101

102-
$dispatcher = $this->createDispatcher(null, $eventDispatcher)->withMiddlewares([$middleware2, $middleware1]);
102+
$dispatcher = $this->createDispatcher(null, $eventDispatcher)->withMiddlewares([$middleware1, $middleware2]);
103103
$dispatcher->dispatch($request, $this->getRequestHandler());
104104

105105
$this->assertEquals(

0 commit comments

Comments
 (0)