Skip to content

Commit 33748af

Browse files
ruudknicolas-grekas
authored andcommitted
[DependencyInjection] Autoconfigurable attributes on methods, properties and parameters
1 parent 294ca5c commit 33748af

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -555,8 +555,15 @@ public function load(array $configs, ContainerBuilder $container)
555555
$container->registerForAutoconfiguration(LoggerAwareInterface::class)
556556
->addMethodCall('setLogger', [new Reference('logger')]);
557557

558-
$container->registerAttributeForAutoconfiguration(AsEventListener::class, static function (ChildDefinition $definition, AsEventListener $attribute): void {
559-
$definition->addTag('kernel.event_listener', get_object_vars($attribute));
558+
$container->registerAttributeForAutoconfiguration(AsEventListener::class, static function (ChildDefinition $definition, AsEventListener $attribute, \Reflector $reflector) {
559+
$tagAttributes = get_object_vars($attribute);
560+
if ($reflector instanceof \ReflectionMethod) {
561+
if (isset($tagAttributes['method'])) {
562+
throw new LogicException(sprintf('AsEventListener attribute cannot declare a method on "%s::%s()".', $reflector->class, $reflector->name));
563+
}
564+
$tagAttributes['method'] = $reflector->getName();
565+
}
566+
$definition->addTag('kernel.event_listener', $tagAttributes);
560567
});
561568
$container->registerAttributeForAutoconfiguration(AsController::class, static function (ChildDefinition $definition, AsController $attribute): void {
562569
$definition->addTag('controller.service_arguments');

0 commit comments

Comments
 (0)