Skip to content

Commit 82db040

Browse files
committed
[DoctrineBridge] feat: deprecate passing doctrine subscribers to ContainerAwareEventManager
1 parent 847416f commit 82db040

File tree

5 files changed

+43
-3
lines changed

5 files changed

+43
-3
lines changed

UPGRADE-6.3.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ DependencyInjection
1717
DoctrineBridge
1818
--------------
1919

20+
* Deprecate `$subscriberIds` in `ContainerAwareEventManager` class constructor, use of doctrine listener is a preferred alternative way
21+
* Deprecate `addEventSubscriber`, `removeEventSubscriber`and `initializeSubscribers` in `ContainerAwareEventManager` class, use of doctrine listener is a preferred alternative way
2022
* Deprecate `DoctrineDbalCacheAdapterSchemaSubscriber` in favor of `DoctrineDbalCacheAdapterSchemaListener`
2123
* Deprecate `MessengerTransportDoctrineSchemaSubscriber` in favor of `MessengerTransportDoctrineSchemaListener`
2224
* Deprecate `RememberMeTokenProviderDoctrineSchemaSubscriber` in favor of `RememberMeTokenProviderDoctrineSchemaListener`

src/Symfony/Bridge/Doctrine/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ CHANGELOG
44
6.3
55
---
66

7+
* Deprecate `$subscriberIds` in `ContainerAwareEventManager` class constructor, use of doctrine listener is a preferred alternative way
8+
* Deprecate `addEventSubscriber`, `removeEventSubscriber`and `initializeSubscribers` in `ContainerAwareEventManager` class, use of doctrine listener is a preferred alternative way
79
* Add `AbstractSchemaListener`, `LockStoreSchemaListener` and `PdoSessionHandlerSchemaListener`
810
* Deprecate `DoctrineDbalCacheAdapterSchemaSubscriber` in favor of `DoctrineDbalCacheAdapterSchemaListener`
911
* Deprecate `MessengerTransportDoctrineSchemaSubscriber` in favor of `MessengerTransportDoctrineSchemaListener`

src/Symfony/Bridge/Doctrine/ContainerAwareEventManager.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,27 @@ public function removeEventListener($events, $listener): void
149149
}
150150
}
151151

152+
/**
153+
* @deprecated since version 6.3
154+
*/
152155
public function addEventSubscriber(EventSubscriber $subscriber): void
153156
{
157+
trigger_deprecation('symfony/doctrine-bridge', '6.3', 'Method "%s()" is deprecated.', __METHOD__);
158+
154159
if (!$this->initializedSubscribers) {
155160
$this->initializeSubscribers();
156161
}
157162

158163
parent::addEventSubscriber($subscriber);
159164
}
160165

166+
/**
167+
* @deprecated since version 6.3
168+
*/
161169
public function removeEventSubscriber(EventSubscriber $subscriber): void
162170
{
171+
trigger_deprecation('symfony/doctrine-bridge', '6.3', 'Method "%s()" is deprecated, use listeners instead', __METHOD__);
172+
163173
if (!$this->initializedSubscribers) {
164174
$this->initializeSubscribers();
165175
}
@@ -190,6 +200,8 @@ private function initializeSubscribers(): void
190200
if (\is_string($subscriber)) {
191201
$subscriber = $this->container->get($subscriber);
192202
}
203+
204+
trigger_deprecation('symfony/doctrine-bridge', '6.3', 'Passing subscribers is deprecated, use listeners instead');
193205
parent::addEventSubscriber($subscriber);
194206
}
195207
$this->subscribers = [];

src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ private function addTaggedServices(ContainerBuilder $container): array
106106
$refs = $managerDef->getArguments()[1] ?? [];
107107
$listenerRefs[$con][$id] = new Reference($id);
108108
if ($subscriberTag === $tagName) {
109+
trigger_deprecation('symfony/doctrine-bridge', '6.3', 'Passing subscribers is deprecated, use listeners instead');
110+
109111
$refs[] = $id;
110112
} else {
111113
$refs[] = [[$tag['event']], $id];

src/Symfony/Bridge/Doctrine/Tests/ContainerAwareEventManagerTest.php

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ protected function setUp(): void
3030
$this->evm = new ContainerAwareEventManager($this->container);
3131
}
3232

33+
/**
34+
* @group legacy
35+
*/
3336
public function testDispatchEventRespectOrder()
3437
{
3538
$this->evm = new ContainerAwareEventManager($this->container, ['sub1', [['foo'], 'list1'], 'sub2']);
@@ -38,9 +41,14 @@ public function testDispatchEventRespectOrder()
3841
$this->container->set('sub1', $subscriber1 = new MySubscriber(['foo']));
3942
$this->container->set('sub2', $subscriber2 = new MySubscriber(['foo']));
4043

44+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Passing subscribers is deprecated, use listeners instead');
45+
4146
$this->assertSame([$subscriber1, $listener1, $subscriber2], array_values($this->evm->getListeners('foo')));
4247
}
4348

49+
/**
50+
* @group legacy
51+
*/
4452
public function testDispatchEvent()
4553
{
4654
$this->evm = new ContainerAwareEventManager($this->container, ['lazy4']);
@@ -57,6 +65,8 @@ public function testDispatchEvent()
5765
$this->container->set('lazy3', $listener5 = new MyListener());
5866
$this->evm->addEventListener('foo', $listener5 = new MyListener());
5967
$this->evm->addEventListener('bar', $listener5);
68+
69+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::addEventSubscriber()" is deprecated.');
6070
$this->evm->addEventSubscriber($subscriber2 = new MySubscriber(['bar']));
6171

6272
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
@@ -83,6 +93,9 @@ public function testDispatchEvent()
8393
$this->assertSame(0, $subscriber2->calledByEventNameCount);
8494
}
8595

96+
/**
97+
* @group legacy
98+
*/
8699
public function testAddEventListenerAndSubscriberAfterDispatchEvent()
87100
{
88101
$this->evm = new ContainerAwareEventManager($this->container, ['lazy7']);
@@ -101,6 +114,8 @@ public function testAddEventListenerAndSubscriberAfterDispatchEvent()
101114
$this->container->set('lazy3', $listener5 = new MyListener());
102115
$this->evm->addEventListener('foo', $listener5 = new MyListener());
103116
$this->evm->addEventListener('bar', $listener5);
117+
118+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::addEventSubscriber()" is deprecated.');
104119
$this->evm->addEventSubscriber($subscriber2 = new MySubscriber(['bar']));
105120

106121
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
@@ -120,6 +135,8 @@ public function testAddEventListenerAndSubscriberAfterDispatchEvent()
120135
$this->container->set('lazy6', $listener10 = new MyListener());
121136
$this->evm->addEventListener('foo', $listener10 = new MyListener());
122137
$this->evm->addEventListener('bar', $listener10);
138+
139+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::addEventSubscriber()" is deprecated.');
123140
$this->evm->addEventSubscriber($subscriber3 = new MySubscriber(['bar']));
124141

125142
$this->assertSame(1, $subscriber1->calledSubscribedEventsCount);
@@ -162,21 +179,23 @@ public function testAddEventListenerAndSubscriberAfterDispatchEvent()
162179
$this->assertSame(0, $subscriber3->calledByEventNameCount);
163180
}
164181

182+
/**
183+
* @group legacy
184+
*/
165185
public function testGetListenersForEvent()
166186
{
167187
$this->evm = new ContainerAwareEventManager($this->container, ['lazy2']);
168188

169189
$this->container->set('lazy', $listener1 = new MyListener());
170190
$this->container->set('lazy2', $subscriber1 = new MySubscriber(['foo']));
191+
192+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Passing subscribers is deprecated, use listeners instead');
171193
$this->evm->addEventListener('foo', 'lazy');
172194
$this->evm->addEventListener('foo', $listener2 = new MyListener());
173195

174196
$this->assertSame([$subscriber1, $listener1, $listener2], array_values($this->evm->getListeners('foo')));
175197
}
176198

177-
/**
178-
* @group legacy
179-
*/
180199
public function testGetListeners()
181200
{
182201
$this->container->set('lazy', $listener1 = new MyListener());
@@ -191,6 +210,7 @@ public function testGetListeners()
191210
public function testGetAllListeners()
192211
{
193212
$this->container->set('lazy', $listener1 = new MyListener());
213+
194214
$this->evm->addEventListener('foo', 'lazy');
195215
$this->evm->addEventListener('foo', $listener2 = new MyListener());
196216

@@ -200,6 +220,7 @@ public function testGetAllListeners()
200220
public function testRemoveEventListener()
201221
{
202222
$this->container->set('lazy', $listener1 = new MyListener());
223+
203224
$this->evm->addEventListener('foo', 'lazy');
204225
$this->evm->addEventListener('foo', $listener2 = new MyListener());
205226

@@ -213,6 +234,7 @@ public function testRemoveEventListener()
213234
public function testRemoveEventListenerAfterDispatchEvent()
214235
{
215236
$this->container->set('lazy', $listener1 = new MyListener());
237+
216238
$this->evm->addEventListener('foo', 'lazy');
217239
$this->evm->addEventListener('foo', $listener2 = new MyListener());
218240

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