Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit17d5a2d

Browse files
committed
add abstract handler
1 parent853743a commit17d5a2d

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
7979
thrownewRuntimeException(sprintf('Invalid handler service "%s": bus "%s" specified on the tag "%s" does not exist (known ones are: %s).',$serviceId,$tag['bus'],$this->handlerTag,implode(',',$busIds)));
8080
}
8181

82-
$className =$container->getDefinition($serviceId)->getClass();
82+
$className =$this->getDefinitionClass($serviceId,$container);
8383
$r =$container->getReflectionClass($className);
8484

8585
if (null ===$r) {
@@ -321,4 +321,17 @@ private function registerBusMiddleware(ContainerBuilder $container, string $busI
321321

322322
$container->getDefinition($busId)->replaceArgument(0,newIteratorArgument($middlewareReferences));
323323
}
324+
325+
privatefunctiongetDefinitionClass(string$serviceId,ContainerBuilder$container)
326+
{
327+
$serviceIdDefinition =$container->getDefinition($serviceId);
328+
while ($serviceIdDefinitioninstanceof ChildDefinition) {
329+
if (null !==$serviceIdDefinition->getClass()) {
330+
break;
331+
}
332+
$serviceIdDefinition =$container->getDefinition($serviceIdDefinition->getParent());
333+
}
334+
335+
return$serviceIdDefinition->getClass();
336+
}
324337
}

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespaceSymfony\Component\Messenger\Tests\DependencyInjection;
1313

1414
usePHPUnit\Framework\TestCase;
15+
useSymfony\Component\DependencyInjection\ChildDefinition;
1516
useSymfony\Component\DependencyInjection\Compiler\ResolveChildDefinitionsPass;
1617
useSymfony\Component\DependencyInjection\Compiler\ResolveClassPass;
1718
useSymfony\Component\DependencyInjection\ContainerBuilder;
@@ -208,6 +209,34 @@ public function testGetClassesAndMethodsAndPrioritiesFromTheSubscriber()
208209
$this->assertSame(PrioritizedHandler::class,$secondHandlerDefinition->getClass());
209210
}
210211

212+
publicfunctiontestRegisterAbstractHandler()
213+
{
214+
$container =$this->getContainerBuilder($messageBusId ='message_bus');
215+
$container->register($messageBusId, MessageBusInterface::class)->addTag('messenger.bus')->setArgument(0, []);
216+
217+
$container
218+
->register(DummyHandler::class, DummyHandler::class)
219+
->setAbstract(true);
220+
221+
$container
222+
->setDefinition($abstractDirectChildId ='direct_child',newChildDefinition(DummyHandler::class))
223+
->setAbstract(true);
224+
225+
$container
226+
->setDefinition($abstractHandlerId ='child',newChildDefinition($abstractDirectChildId))
227+
->addTag('messenger.message_handler');
228+
229+
(newMessengerPass())->process($container);
230+
231+
$messageHandlerMapping =$container->getDefinition($messageBusId.'.messenger.handlers_locator')->getArgument(0);
232+
$this->assertHandlerDescriptor(
233+
$container,
234+
$messageHandlerMapping,
235+
DummyMessage::class,
236+
[$abstractHandlerId]
237+
);
238+
}
239+
211240
/**
212241
* @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
213242
* @expectedExceptionMessage Invalid service "NonExistentHandlerClass": class "NonExistentHandlerClass" does not exist.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp