Merge branch '5.0' into 5.1
* 5.0: [Messenger] fix computing the id of same-name middleware
This commit is contained in:
commit
ea258254d0
@ -339,15 +339,18 @@ class MessengerPass implements CompilerPassInterface
|
|||||||
if ($container->findDefinition($messengerMiddlewareId)->isAbstract()) {
|
if ($container->findDefinition($messengerMiddlewareId)->isAbstract()) {
|
||||||
$childDefinition = new ChildDefinition($messengerMiddlewareId);
|
$childDefinition = new ChildDefinition($messengerMiddlewareId);
|
||||||
$childDefinition->setArguments($arguments);
|
$childDefinition->setArguments($arguments);
|
||||||
$container->setDefinition($messengerMiddlewareId = $busId.'.middleware.'.$id.'.'.ContainerBuilder::hash($arguments), $childDefinition);
|
if (isset($middlewareReferences[$messengerMiddlewareId = $busId.'.middleware.'.$id])) {
|
||||||
|
$messengerMiddlewareId .= '.'.ContainerBuilder::hash($arguments);
|
||||||
|
}
|
||||||
|
$container->setDefinition($messengerMiddlewareId, $childDefinition);
|
||||||
} elseif ($arguments) {
|
} elseif ($arguments) {
|
||||||
throw new RuntimeException(sprintf('Invalid middleware factory "%s": a middleware factory must be an abstract definition.', $id));
|
throw new RuntimeException(sprintf('Invalid middleware factory "%s": a middleware factory must be an abstract definition.', $id));
|
||||||
}
|
}
|
||||||
|
|
||||||
$middlewareReferences[] = new Reference($messengerMiddlewareId);
|
$middlewareReferences[$messengerMiddlewareId] = new Reference($messengerMiddlewareId);
|
||||||
}
|
}
|
||||||
|
|
||||||
$container->getDefinition($busId)->replaceArgument(0, new IteratorArgument($middlewareReferences));
|
$container->getDefinition($busId)->replaceArgument(0, new IteratorArgument(array_values($middlewareReferences)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getServiceClass(ContainerBuilder $container, string $serviceId): string
|
private function getServiceClass(ContainerBuilder $container, string $serviceId): string
|
||||||
|
@ -546,7 +546,7 @@ class MessengerPassTest extends TestCase
|
|||||||
(new ResolveChildDefinitionsPass())->process($container);
|
(new ResolveChildDefinitionsPass())->process($container);
|
||||||
|
|
||||||
$this->assertTrue($container->hasDefinition(
|
$this->assertTrue($container->hasDefinition(
|
||||||
$factoryChildMiddlewareArgs1Id = $fooBusId.'.middleware.middleware_with_factory.'.ContainerBuilder::hash($factoryChildMiddlewareArgs1)
|
$factoryChildMiddlewareArgs1Id = $fooBusId.'.middleware.middleware_with_factory'
|
||||||
));
|
));
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
['foo', 'bar'],
|
['foo', 'bar'],
|
||||||
@ -564,7 +564,7 @@ class MessengerPassTest extends TestCase
|
|||||||
);
|
);
|
||||||
|
|
||||||
$this->assertTrue($container->hasDefinition(
|
$this->assertTrue($container->hasDefinition(
|
||||||
$factoryWithDefaultChildMiddlewareId = $fooBusId.'.middleware.middleware_with_factory_using_default.'.ContainerBuilder::hash([])
|
$factoryWithDefaultChildMiddlewareId = $fooBusId.'.middleware.middleware_with_factory_using_default'
|
||||||
));
|
));
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
['some_default'],
|
['some_default'],
|
||||||
|
Reference in New Issue
Block a user