8000 add searching parents class · symfony/symfony@a42682c · GitHub
[go: up one dir, main page]

Skip to content

Commit a42682c

Browse files
committed
add searching parents class
1 parent b879ba4 commit a42682c

File tree

2 files changed

+28
-52
lines changed

2 files changed

+28
-52
lines changed

src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function process(ContainerBuilder $container)
5151
$busIds = [];
5252
foreach ($container->findTaggedServiceIds($this->busTag) as $busId => $tags) {
5353
$busIds[] = $busId;
54-
if ($container->hasParameter($busMiddlewareParameter = $busId.'.middleware')) {
54+
if ($container->hasParameter($busMiddlewareParameter = $busId . '.middleware')) {
5555
$this->registerBusMiddleware($container, $busId, $container->getParameter($busMiddlewareParameter));
5656

5757
$container->getParameterBag()->remove($busMiddlewareParameter);
@@ -80,13 +80,13 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
8080
}
8181

8282
$serviceIdDefinition = $container->getDefinition($serviceId);
83-
84-
if ($serviceIdDefinition instanceof ChildDefinition) {
85-
$className = $container->getDefinition($serviceIdDefinition->getParent())->getClass();
86-
} else {
87-
$className = $serviceIdDefinition->getClass();
83+
while ($serviceIdDefinition instanceof ChildDefinition) {
84+
if (null !== $serviceIdDefinition->getClass()) {
85+
break;
86+
}
87+
$serviceIdDefinition = $container->getDefinition($serviceIdDefinition->getParent());
8888
}
89-
89+
$className = $serviceIdDefinition->getClass();
9090
$r = $container->getReflectionClass($className);
9191

9292
if (null === $r) {
@@ -100,7 +100,7 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
100100
}
101101

102102
$message = null;
103-
$handlerBuses = (array) ($tag['bus'] ?? $busIds);
103+
$handlerBuses = (array)($tag['bus'] ?? $busIds);
104104

105105
foreach ($handles as $message => $options) {
106106
$buses = $handlerBuses;
@@ -144,7 +144,7 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
144144
if ('__invoke' !== $method) {
145145
$wrapperDefinition = (new Definition('callable'))->addArgument([new Reference($serviceId), $method])->setFactory('Closure::fromCallable');
146146

147-
$definitions[$definitionId = '.messenger.method_on_object_wrapper.'.ContainerBuilder::hash($message.':'.$priority.':'.$serviceId.':'.$method)] = $wrapperDefinition;
147+
$definitions[$definitionId = '.messenger.method_on_object_wrapper.' . ContainerBuilder::hash($message . ':' . $priority . ':' . $serviceId . ':' . $method)] = $wrapperDefinition;
148148
} else {
149149
$definitionId = $serviceId;
150150
}
@@ -172,7 +172,7 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
172172
foreach ($handlersByMessage as $message => $handlers) {
173173
$handlerDescriptors = [];
174174
foreach ($handlers as $handler) {
175-
$definitions[$definitionId = '.messenger.handler_descriptor.'.ContainerBuilder::hash($bus.':'.$message.':'.$handler[0])] = (new Definition(HandlerDescriptor::class))->setArguments([new Reference($handler[0]), $handler[1]]);
175+
$definitions[$definitionId = '.messenger.handler_descriptor.' . ContainerBuilder::hash($bus . ':' . $message . ':' . $handler[0])] = (new Definition(HandlerDescriptor::class))->setArguments([new Reference($handler[0]), $handler[1]]);
176176
$handlerDescriptors[] = new Reference($definitionId);
177177
}
178178

@@ -182,11 +182,13 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
182182
$container->addDefinitions($definitions);
183183

184184
foreach ($busIds as $bus) {
185-
$container->register($locatorId = $bus.'.messenger.handlers_locator', HandlersLocator::class)
186-
->setArgument(0, $handlersLocatorMappingByBus[$bus] ?? []);
187-
if ($container->has($handleMessageId = $bus.'.middleware.handle_message')) {
185+
$container->register($locatorId = $bus . '.messenger.handlers_locator', HandlersLocator::class)
186+
->setArgument(0, $handlersLocatorMappingByBus[$bus] ?? [])
187+
;
188+
if ($container->has($handleMessageId = $bus . '.middleware.handle_message')) {
188189
$container->getDefinition($handleMessageId)
189-
->replaceArgument(0, new Reference($locatorId));
190+
->replaceArgument(0, new Reference($locatorId))
191+
;
190192
}
191193
}
192194

@@ -226,7 +228,7 @@ private function guessHandledClasses(\ReflectionClass $handlerClass, string $ser
226228
throw new RuntimeException(sprintf('Invalid handler service "%s": type-hint of argument "$%s" in method "%s::__invoke()" must be a class , "%s" given.', $serviceId, $parameters[0]->getName(), $handlerClass->getName(), $type));
227229
}
228230

229-
return [(string) $parameters[0]->getType()];
231+
return [(string)$parameters[0]->getType()];
230232
}
231233

232234
private function registerReceivers(ContainerBuilder $container, array $busIds)
@@ -250,7 +252,7 @@ private function registerReceivers(ContainerBuilder $container, array $busIds)
250252

251253
$receiverNames = [];
252254
foreach ($receiverMapping as $name => $reference) {
253-
$receiverNames[(string) $reference] = $name;
255+
$receiverNames[(string)$reference] = $name;
254256
}
255257

256258
$buses = [];
@@ -292,8 +294,8 @@ private function registerReceivers(ContainerBuilder $container, array $busIds)
292294
private function registerBusToCollector(ContainerBuilder $container, string $busId)
293295
{
294296
$container->setDefinition(
295-
$tracedBusId = 'debug.traced.'.$busId,
296-
(new Definition(TraceableMessageBus::class, [new Reference($tracedBusId.'.inner')]))->setDecoratedService($busId)
297+
$tracedBusId = 'debug.traced.' . $busId,
298+
(new Definition(TraceableMessageBus::class, [new Reference($tracedBusId . '.inner')]))->setDecoratedService($busId)
297299
);
298300

299301
$container->getDefinition('data_collector.messenger')->addMethodCall('registerBus', [$busId, new Reference($tracedBusId)]);
@@ -305,7 +307,7 @@ private function registerBusMiddleware(ContainerBuilder $container, string $busI
305307
foreach ($middlewareCollection as $middlewareItem) {
306308
$id = $middlewareItem['id'];
307309
$arguments = $middlewareItem['arguments'] ?? [];
308-
if (!$container->has($messengerMiddlewareId = 'messenger.middleware.'.$id)) {
310+
if (!$container->has($messengerMiddlewareId = 'messenger.middleware.' . $id)) {
309311
$messengerMiddlewareId = $id;
310312
}
311313

@@ -316,7 +318,7 @@ private function registerBusMiddleware(ContainerBuilder $container, string $busI
316318
if ($container->findDefinition($messengerMiddlewareId)->isAbstract()) {
317319
$childDefinition = new ChildDefinition($messengerMiddlewareId);
318320
$childDefinition->setArguments($arguments);
319-
$container->setDefinition($messengerMiddlewareId = $busId.'.middleware.'.$id, $childDefinition);
321+
$container->setDefinition($messengerMiddlewareId = $busId . '.middleware.' . $id, $childDefinition);
320322
} elseif ($arguments) {
321323
throw new RuntimeException(sprintf('Invalid middleware factory "%s": a middleware factory must be an abstract definition.', $id));
322324
}

src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php

Lines changed: 6 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,13 @@ public function testRegisterAbstractHandler()
218218
->register(DummyHandler::class, DummyHandler::class)
219219
->setAbstract(true);
220220

221+
221222
$container
222-
->setDefinition($abstractHandlerId = 'child', new ChildDefinition(DummyHandler::class))
223+
->setDefinition($abstractDirectChildId = 'direct_child', new ChildDefinition(DummyHandler::class))
224+
->setAbstract(true);
225+
226+
$container
227+
->setDefinition($abstractHandlerId = 'child', new ChildDefinition($abstractDirectChildId))
223228
->addTag('messenger.message_handler');
224229

225230
(new MessengerPass())->process($container);
@@ -231,37 +236,6 @@ public function testRegisterAbstractHandler()
231236
DummyMessage::class,
232237
[$abstractHandlerId]
233238
);
234-
235-
// /////
236-
// ///
237-
// $container = $this->getContainerBuilder($eventsBusId = 'event_bus');
238-
// $container->register($commandsBusId = 'command_bus', MessageBusInterface::class)->addTag('messenger.bus')->setArgument(0, []);
239-
//
240-
// $container
241-
// ->register(HandlerOnSpecificBuses::class, HandlerOnSpecificBuses::class)
242-
// ->addTag('messenger.message_handler');
243-
//
244-
// (new MessengerPass())->process($container);
245-
//
246-
// $eventsHandlerMapping = $container->getDefinition($eventsBusId.'.messenger.handlers_locator')->getArgument(0);
247-
//
248-
// $this->assertHandlerDescriptor(
249-
// $container,
250-
// $eventsHandlerMapping,
251-
// DummyMessage::class,
252-
// [[HandlerOnSpecificBuses::class, 'dummyMethodForEvents']],
253-
// [['bus' => 'event_bus']]
254-
// );
255-
//
256-
// $commandsHandlerMapping = $container->getDefinition($commandsBusId.'.messenger.handlers_locator')->getArgument(0);
257-
//
258-
// $this->assertHandlerDescriptor(
259-
// $container,
260-
// $commandsHandlerMapping,
261-
// DummyMessage::class,
262-
// [[HandlerOnSpecificBuses::class, 'dummyMethodForCommands']],
263-
// [['bus' => 'command_bus']]
264-
// );
265239
}
266240

267241
/**

0 commit comments

Comments
 (0)
0