Skip to content

Commit 6513db5

Browse files
committed
[EventDispatcher] Add events attribute of the kernel.event_listener tag
1 parent b49a855 commit 6513db5

File tree

15 files changed

+232
-69
lines changed

15 files changed

+232
-69
lines changed

UPGRADE-7.4.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ DoctrineBridge
2828

2929
* Deprecate `UniqueEntity::getRequiredOptions()` and `UniqueEntity::getDefaultOption()`
3030

31+
EventDispatcher
32+
---------------
33+
* Deprecate attribute `event` of the `kernel.event_listener` tag in favor of `events` attribute
34+
3135
FrameworkBundle
3236
---------------
3337

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,9 +1205,9 @@ private function registerWorkflowConfiguration(array $config, ContainerBuilder $
12051205
if ($workflow['audit_trail']['enabled']) {
12061206
$listener = new Definition(Workflow\EventListener\AuditTrailListener::class);
12071207
$listener->addTag('monolog.logger', ['channel' => 'workflow']);
1208-
$listener->addTag('kernel.event_listener', ['event' => \sprintf('workflow.%s.leave', $name), 'method' => 'onLeave']);
1209-
$listener->addTag('kernel.event_listener', ['event' => \sprintf('workflow.%s.transition', $name), 'method' => 'onTransition']);
1210-
$listener->addTag('kernel.event_listener', ['event' => \sprintf('workflow.%s.enter', $name), 'method' => 'onEnter']);
1208+
$listener->addTag('kernel.event_listener', ['events' => \sprintf('workflow.%s.leave', $name), 'method' => 'onLeave']);
1209+
$listener->addTag('kernel.event_listener', ['events' => \sprintf('workflow.%s.transition', $name), 'method' => 'onTransition']);
1210+
$listener->addTag('kernel.event_listener', ['events' => \sprintf('workflow.%s.enter', $name), 'method' => 'onEnter']);
12111211
$listener->addArgument(new Reference('logger'));
12121212
$container->setDefinition(\sprintf('.%s.listener.audit_trail', $workflowId), $listener);
12131213
}
@@ -1234,7 +1234,7 @@ private function registerWorkflowConfiguration(array $config, ContainerBuilder $
12341234
new Reference('validator', ContainerInterface::NULL_ON_INVALID_REFERENCE),
12351235
]);
12361236
foreach ($guardsConfiguration as $eventName => $config) {
1237-
$guard->addTag('kernel.event_listener', ['event' => $eventName, 'method' => 'onTransition']);
1237+
$guard->addTag('kernel.event_listener', ['events' => $eventName, 'method' => 'onTransition']);
12381238
}
12391239

12401240
$container->setDefinition(\sprintf('.%s.listener.guard', $workflowId), $guard);

src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
->tag('data_collector', ['template' => '@WebProfiler/Collector/memory.html.twig', 'id' => 'memory', 'priority' => 325])
7474

7575
->set('data_collector.router', RouterDataCollector::class)
76-
->tag('kernel.event_listener', ['event' => KernelEvents::CONTROLLER, 'method' => 'onKernelController'])
76+
->tag('kernel.event_listener', ['events' => KernelEvents::CONTROLLER, 'method' => 'onKernelController'])
7777
->tag('data_collector', ['template' => '@WebProfiler/Collector/router.html.twig', 'id' => 'router', 'priority' => 285])
7878

7979
->set('.data_collector.command', CommandDataCollector::class)

src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,6 @@
5959
abstract_arg('framework.csrf_protection.cookie_name'),
6060
])
6161
->tag('monolog.logger', ['channel' => 'request'])
62-
->tag('kernel.event_listener', ['event' => 'kernel.response', 'method' => 'onKernelResponse'])
62+
->tag('kernel.event_listener', ['events' => 'kernel.response', 'method' => 'onKernelResponse'])
6363
;
6464
};

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ public function testWorkflowGuardExpressions()
509509
$guardDefinition = $container->getDefinition('.workflow.article.listener.guard');
510510
$this->assertSame([
511511
[
512-
'event' => 'workflow.article.guard.publish',
512+
'events' => 'workflow.article.guard.publish',
513513
'method' => 'onTransition',
514514
],
515515
], $guardDefinition->getTag('kernel.event_listener'));

src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ private function createFirewall(ContainerBuilder $container, string $id, array $
391391
$defaultProvider = $providerIds[$normalizedName];
392392

393393
$container->setDefinition('security.listener.'.$id.'.user_provider', new ChildDefinition('security.listener.user_provider.abstract'))
394-
->addTag('kernel.event_listener', ['dispatcher' => $firewallEventDispatcherId, 'event' => CheckPassportEvent::class, 'priority' => 2048, 'method' => 'checkPassport'])
394+
->addTag('kernel.event_listener', ['dispatcher' => $firewallEventDispatcherId, 'events' => CheckPassportEvent::class, 'priority' => 2048, 'method' => 'checkPassport'])
395395
->replaceArgument(0, new Reference($defaultProvider));
396396
} elseif (1 === \count($providerIds)) {
397397
$defaultProvider = reset($providerIds);
@@ -602,7 +602,7 @@ private function createContextListener(ContainerBuilder $container, string $cont
602602
$listener->replaceArgument(2, $contextKey);
603603
if (null !== $firewallEventDispatcherId) {
604604
$listener->replaceArgument(4, new Reference($firewallEventDispatcherId));
605-
$listener->addTag('kernel.event_listener', ['event' => KernelEvents::RESPONSE, 'method' => 'onKernelResponse']);
605+
$listener->addTag('kernel.event_listener', ['events' => KernelEvents::RESPONSE, 'method' => 'onKernelResponse']);
606606
}
607607

608608
return $this->contextListeners[$contextKey] = $listenerId;

src/Symfony/Bundle/SecurityBundle/Resources/config/security_authenticator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
->args([
7676
service('security.user_providers'),
7777
])
78-
->tag('kernel.event_listener', ['event' => CheckPassportEvent::class, 'priority' => 1024, 'method' => 'checkPassport'])
78+
->tag('kernel.event_listener', ['events' => CheckPassportEvent::class, 'priority' => 1024, 'method' => 'checkPassport'])
7979

8080
->set('security.listener.user_provider.abstract', UserProviderListener::class)
8181
->abstract()

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Compiler/RegisterGlobalSecurityEventListenersPassTest.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function testEventIsPropagated(string $configuredEvent, string $registere
6060
]);
6161

6262
$this->container->register('app.security_listener', \stdClass::class)
63-
->addTag('kernel.event_listener', ['method' => 'onEvent', 'event' => $configuredEvent]);
63+
->addTag('kernel.event_listener', ['method' => 'onEvent', 'events' => $configuredEvent]);
6464

6565
$this->container->compile();
6666

@@ -93,9 +93,9 @@ public function testRegisterCustomListener()
9393
]);
9494

9595
$this->container->register('app.security_listener', \stdClass::class)
96-
->addTag('kernel.event_listener', ['method' => 'onLogout', 'event' => LogoutEvent::class])
97-
->addTag('kernel.event_listener', ['method' => 'onLoginSuccess', 'event' => LoginSuccessEvent::class, 'priority' => 20])
98-
->addTag('kernel.event_listener', ['method' => 'onAuthenticationSuccess', 'event' => AuthenticationEvents::AUTHENTICATION_SUCCESS]);
96+
->addTag('kernel.event_listener', ['method' => 'onLogout', 'events' => LogoutEvent::class])
97+
->addTag('kernel.event_listener', ['method' => 'onLoginSuccess', 'events' => LoginSuccessEvent::class, 'priority' => 20])
98+
->addTag('kernel.event_listener', ['method' => 'onAuthenticationSuccess', 'events' => AuthenticationEvents::AUTHENTICATION_SUCCESS]);
9999

100100
$this->container->compile();
101101

@@ -136,9 +136,9 @@ public function testMultipleFirewalls()
136136
->setPublic(true);
137137

138138
$this->container->register('app.security_listener', \stdClass::class)
139-
->addTag('kernel.event_listener', ['method' => 'onLogout', 'event' => LogoutEvent::class])
140-
->addTag('kernel.event_listener', ['method' => 'onLoginSuccess', 'event' => LoginSuccessEvent::class, 'priority' => 20])
141-
->addTag('kernel.event_listener', ['method' => 'onAuthenticationSuccess', 'event' => AuthenticationEvents::AUTHENTICATION_SUCCESS]);
139+
->addTag('kernel.event_listener', ['method' => 'onLogout', 'events' => LogoutEvent::class])
140+
->addTag('kernel.event_listener', ['method' => 'onLoginSuccess', 'events' => LoginSuccessEvent::class, 'priority' => 20])
141+
->addTag('kernel.event_listener', ['method' => 'onAuthenticationSuccess', 'events' => AuthenticationEvents::AUTHENTICATION_SUCCESS]);
142142

143143
$this->container->compile();
144144

@@ -165,9 +165,9 @@ public function testListenerAlreadySpecific()
165165
->setPublic(true);
166166

167167
$this->container->register('app.security_listener', \stdClass::class)
168-
->addTag('kernel.event_listener', ['method' => 'onLogout', 'event' => LogoutEvent::class, 'dispatcher' => 'security.event_dispatcher.main'])
169-
->addTag('kernel.event_listener', ['method' => 'onLoginSuccess', 'event' => LoginSuccessEvent::class, 'priority' => 20])
170-
->addTag('kernel.event_listener', ['method' => 'onAuthenticationSuccess', 'event' => AuthenticationEvents::AUTHENTICATION_SUCCESS]);
168+
->addTag('kernel.event_listener', ['method' => 'onLogout', 'events' => LogoutEvent::class, 'dispatcher' => 'security.event_dispatcher.main'])
169+
->addTag('kernel.event_listener', ['method' => 'onLoginSuccess', 'events' => LoginSuccessEvent::class, 'priority' => 20])
170+
->addTag('kernel.event_listener', ['method' => 'onAuthenticationSuccess', 'events' => AuthenticationEvents::AUTHENTICATION_SUCCESS]);
171171

172172
$this->container->compile();
173173

src/Symfony/Component/EventDispatcher/Attribute/AsEventListener.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,18 @@
2020
class AsEventListener
2121
{
2222
/**
23-
* @param string|null $event The event name to listen to
24-
* @param string|null $method The method to run when the listened event is triggered
25-
* @param int $priority The priority of this listener if several are declared for the same event
26-
* @param string|null $dispatcher The service id of the event dispatcher to listen to
23+
* @param string|null $event The event name to listen to
24+
* @param string|null $method The method to run when the listened event is triggered
25+
* @param int $priority The priority of this listener if several are declared for the same event
26+
* @param string|null $dispatcher The service id of the event dispatcher to listen to
27+
* @param array|string|null $events The event or events name to listen to
2728
*/
2829
public function __construct(
2930
public ?string $event = null,
3031
public ?string $method = null,
3132
public int $priority = 0,
3233
public ?string $dispatcher = null,
34+
public array|string|null $events = null,
3335
) {
3436
}
3537
}

src/Symfony/Component/EventDispatcher/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
7.4
5+
---
6+
* Add `events` attribute of the `kernel.event_listener` tag
7+
* Deprecated the `event` attribute of the `kernel.event_listener` tag
8+
49
6.0
510
---
611

0 commit comments

Comments
 (0)