@@ -23,7 +23,7 @@ final class MiddlewareStack implements RequestHandlerInterface
23
23
* @var RequestHandlerInterface|null stack of middleware
24
24
*/
25
25
private ?RequestHandlerInterface $ stack = null ;
26
- private EventDispatcherInterface $ eventDispatcher ;
26
+ private ? EventDispatcherInterface $ eventDispatcher ;
27
27
private RequestHandlerInterface $ fallbackHandler ;
28
28
private array $ middlewares ;
29
29
@@ -33,7 +33,7 @@ final class MiddlewareStack implements RequestHandlerInterface
33
33
* @param EventDispatcherInterface $eventDispatcher Event dispatcher to use for triggering before/after middleware
34
34
* events.
35
35
*/
36
- public function __construct (array $ middlewares , RequestHandlerInterface $ fallbackHandler , EventDispatcherInterface $ eventDispatcher )
36
+ public function __construct (array $ middlewares , RequestHandlerInterface $ fallbackHandler , ? EventDispatcherInterface $ eventDispatcher = null )
37
37
{
38
38
if ($ middlewares === []) {
39
39
throw new RuntimeException ('Stack is empty. ' );
@@ -75,12 +75,12 @@ private function wrap(Closure $middlewareFactory, RequestHandlerInterface $handl
75
75
private Closure $ middlewareFactory ;
76
76
private ?MiddlewareInterface $ middleware = null ;
77
77
private RequestHandlerInterface $ handler ;
78
- private EventDispatcherInterface $ eventDispatcher ;
78
+ private ? EventDispatcherInterface $ eventDispatcher ;
79
79
80
80
public function __construct (
81
81
Closure $ middlewareFactory ,
82
82
RequestHandlerInterface $ handler ,
83
- EventDispatcherInterface $ eventDispatcher
83
+ ? EventDispatcherInterface $ eventDispatcher
84
84
) {
85
85
$ this ->middlewareFactory = $ middlewareFactory ;
86
86
$ this ->handler = $ handler ;
@@ -94,12 +94,16 @@ public function handle(ServerRequestInterface $request): ResponseInterface
94
94
$ this ->middleware = ($ this ->middlewareFactory )();
95
95
}
96
96
97
- $ this ->eventDispatcher ->dispatch (new BeforeMiddleware ($ this ->middleware , $ request ));
97
+ if ($ this ->eventDispatcher !== null ) {
98
+ $ this ->eventDispatcher ->dispatch (new BeforeMiddleware ($ this ->middleware , $ request ));
99
+ }
98
100
99
101
try {
100
102
return $ response = $ this ->middleware ->process ($ request , $ this ->handler );
101
103
} finally {
102
- $ this ->eventDispatcher ->dispatch (new AfterMiddleware ($ this ->middleware , $ response ?? null ));
104
+ if ($ this ->eventDispatcher !== null ) {
105
+ $ this ->eventDispatcher ->dispatch (new AfterMiddleware ($ this ->middleware , $ response ?? null ));
106
+ }
103
107
}
104
108
}
105
109
};
0 commit comments