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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy