diff --git a/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php b/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php index c7b5ad5fad..e6c18ad875 100644 --- a/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php +++ b/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php @@ -69,7 +69,7 @@ class MessengerPass implements CompilerPassInterface foreach ($container->findTaggedServiceIds($this->handlerTag, true) as $serviceId => $tags) { foreach ($tags as $tag) { - $handles = $tag['handles'] ?? $this->guessHandledClasses($r = $container->getReflectionClass($container->getDefinition($serviceId)->getClass()), $serviceId); + $handles = isset($tag['handles']) ? array($tag['handles']) : $this->guessHandledClasses($r = $container->getReflectionClass($container->getDefinition($serviceId)->getClass()), $serviceId); $priority = $tag['priority'] ?? 0; foreach ($handles as $messageClass) { diff --git a/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php b/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php index c950f94dbe..9189fd7cdd 100644 --- a/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php +++ b/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php @@ -33,6 +33,10 @@ class MessengerPassTest extends TestCase ->register(DummyHandler::class, DummyHandler::class) ->addTag('messenger.message_handler') ; + $container + ->register(MissingArgumentTypeHandler::class, MissingArgumentTypeHandler::class) + ->addTag('messenger.message_handler', array('handles' => SecondMessage::class)) + ; $container ->register(DummyReceiver::class, DummyReceiver::class) ->addTag('messenger.receiver') @@ -43,7 +47,10 @@ class MessengerPassTest extends TestCase $handlerLocatorDefinition = $container->getDefinition($container->getDefinition('messenger.handler_resolver')->getArgument(0)); $this->assertSame(ServiceLocator::class, $handlerLocatorDefinition->getClass()); $this->assertEquals( - array('handler.'.DummyMessage::class => new ServiceClosureArgument(new Reference(DummyHandler::class))), + array( + 'handler.'.DummyMessage::class => new ServiceClosureArgument(new Reference(DummyHandler::class)), + 'handler.'.SecondMessage::class => new ServiceClosureArgument(new Reference(MissingArgumentTypeHandler::class)), + ), $handlerLocatorDefinition->getArgument(0) );