diff --git a/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php b/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php index 264f8bfdcd..bd3c721b83 100644 --- a/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php +++ b/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php @@ -128,11 +128,13 @@ class MessengerPass implements CompilerPassInterface if ('__invoke' !== $method) { $wrapperDefinition = (new Definition('callable'))->addArgument(array(new Reference($serviceId), $method))->setFactory('Closure::fromCallable'); - $definitions[$serviceId = '.messenger.method_on_object_wrapper.'.ContainerBuilder::hash($messageClass.':'.$messagePriority.':'.$serviceId.':'.$method)] = $wrapperDefinition; + $definitions[$definitionId = '.messenger.method_on_object_wrapper.'.ContainerBuilder::hash($messageClass.':'.$messagePriority.':'.$serviceId.':'.$method)] = $wrapperDefinition; + } else { + $definitionId = $serviceId; } foreach ($handlerBuses as $handlerBus) { - $handlersByBusAndMessage[$handlerBus][$messageClass][$messagePriority][] = $serviceId; + $handlersByBusAndMessage[$handlerBus][$messageClass][$messagePriority][] = $definitionId; } } } diff --git a/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php b/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php index 618604f239..4b2a0de1b9 100644 --- a/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php +++ b/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php @@ -288,7 +288,12 @@ class MessengerPassTest extends TestCase $handlerMapping = $handlerLocatorDefinition->getArgument(0); $this->assertArrayHasKey('handler.'.DummyMessage::class, $handlerMapping); + $firstReference = $handlerMapping['handler.'.DummyMessage::class]->getValues()[0]; + $this->assertEquals(array(new Reference(HandlerWithGenerators::class), 'dummyMethod'), $container->getDefinition($firstReference)->getArgument(0)); + $this->assertArrayHasKey('handler.'.SecondMessage::class, $handlerMapping); + $secondReference = $handlerMapping['handler.'.SecondMessage::class]->getValues()[0]; + $this->assertEquals(array(new Reference(HandlerWithGenerators::class), 'secondMessage'), $container->getDefinition($secondReference)->getArgument(0)); } /**