[Messenger] Fix handles tag attribute

This commit is contained in:
Roland Franssen 2018-04-04 20:18:31 +02:00 committed by Samuel ROZE
parent e973f6f380
commit 92f7e37a27
2 changed files with 9 additions and 2 deletions

View File

@ -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) {

View File

@ -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)
);