File tree Expand file tree Collapse file tree 1 file changed +11
-5
lines changed
src/Symfony/Component/Message Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Original file line number Diff line number Diff line change 17
17
*/
18
18
class MessageBus implements MessageBusInterface
19
19
{
20
+ private $ middlewares ;
21
+
20
22
/**
21
- * @var MiddlewareInterface[]
23
+ * @var MiddlewareInterface[]|null
22
24
*/
23
- private $ middlewares ;
25
+ private $ indexedMiddlewares ;
24
26
25
27
/**
26
28
* @param MiddlewareInterface[]|iterable $middlewares
27
29
*/
28
30
public function __construct (iterable $ middlewares = array ())
29
31
{
30
- $ this ->middlewares = is_array ( $ middlewares) ? array_values ( $ middlewares ) : iterator_to_array ( $ middlewares , false ) ;
32
+ $ this ->middlewares = $ middlewares ;
31
33
}
32
34
33
35
/**
@@ -40,11 +42,15 @@ public function dispatch($message)
40
42
41
43
private function callableForNextMiddleware (int $ index ): callable
42
44
{
43
- if (!isset ($ this ->middlewares [$ index ])) {
45
+ if (null === $ this ->indexedMiddlewares ) {
46
+ $ this ->indexedMiddlewares = is_array ($ this ->middlewares ) ? array_values ($ this ->middlewares ) : iterator_to_array ($ this ->middlewares , false );
47
+ }
48
+
49
+ if (!isset ($ this ->indexedMiddlewares [$ index ])) {
44
50
return function () {};
45
51
}
46
52
47
- $ middleware = $ this ->middlewares [$ index ];
53
+ $ middleware = $ this ->indexedMiddlewares [$ index ];
48
54
49
55
return function ($ message ) use ($ middleware , $ index ) {
50
56
return $ middleware ->handle ($ message , $ this ->callableForNextMiddleware ($ index + 1 ));
You can’t perform that action at this time.
0 commit comments