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 1717 */
1818class MessageBus implements MessageBusInterface
1919{
20+ private $ middlewares ;
21+
2022 /**
21- * @var MiddlewareInterface[]
23+ * @var MiddlewareInterface[]|null
2224 */
23- private $ middlewares ;
25+ private $ indexedMiddlewares ;
2426
2527 /**
2628 * @param MiddlewareInterface[]|iterable $middlewares
2729 */
2830 public function __construct (iterable $ middlewares = array ())
2931 {
30- $ this ->middlewares = is_array ( $ middlewares) ? array_values ( $ middlewares ) : iterator_to_array ( $ middlewares , false ) ;
32+ $ this ->middlewares = $ middlewares ;
3133 }
3234
3335 /**
@@ -40,11 +42,15 @@ public function dispatch($message)
4042
4143 private function callableForNextMiddleware (int $ index ): callable
4244 {
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 ])) {
4450 return function () {};
4551 }
4652
47- $ middleware = $ this ->middlewares [$ index ];
53+ $ middleware = $ this ->indexedMiddlewares [$ index ];
4854
4955 return function ($ message ) use ($ middleware , $ index ) {
5056 return $ middleware ->handle ($ message , $ this ->callableForNextMiddleware ($ index + 1 ));
You can’t perform that action at this time.
0 commit comments