Skip to content

Commit 365b0a5

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

File tree

4 files changed

+70
-1
lines changed

4 files changed

+70
-1
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: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,12 @@ class ContainerAwareEventManager extends EventManager
3838
/**
3939
* @param list<string|EventSubscriber|array{string[], string|object}> $subscriberIds List of subscribers, subscriber ids, or [events, listener] tuples
4040
*/
41-
public function __construct(ContainerInterface $container, array $subscriberIds = [])
41+
public function __construct(ContainerInterface $container, /**@deprecated*/ array $subscriberIds = [])
4242
{
43+
if (\func_num_args() > 1) {
44+
trigger_deprecation('symfony/doctrine-bridge', '6.3', 'The second argument passed to %s() is deprecated.', __METHOD__);
45+
}
46+
4347
$this->container = $container;
4448
$this->subscribers = $subscriberIds;
4549
}
@@ -149,17 +153,27 @@ public function removeEventListener($events, $listener): void
149153
}
150154
}
151155

156+
/**
157+
* @deprecated since version 6.3
158+
*/
152159
public function addEventSubscriber(EventSubscriber $subscriber): void
153160
{
161+
trigger_deprecation('symfony/doctrine-bridge', '6.3', 'Method "%s()" is deprecated.', __METHOD__);
162+
154163
if (!$this->initializedSubscribers) {
155164
$this->initializeSubscribers();
156165
}
157166

158167
parent::addEventSubscriber($subscriber);
159168
}
160169

170+
/**
171+
* @deprecated since version 6.3
172+
*/
161173
public function removeEventSubscriber(EventSubscriber $subscriber): void
162174
{
175+
trigger_deprecation('symfony/doctrine-bridge', '6.3', 'Method "%s()" is deprecated.', __METHOD__);
176+
163177
if (!$this->initializedSubscribers) {
164178
$this->initializeSubscribers();
165179
}
@@ -179,8 +193,13 @@ private function initializeListeners(string $eventName): void
179193
}
180194
}
181195

196+
/**
197+
* @deprecated since version 6.3
198+
*/
182199
private function initializeSubscribers(): void
183200
{
201+
trigger_deprecation('symfony/doctrine-bridge', '6.3', 'Method "%s()" is deprecated.', __METHOD__);
202+
184203
$this->initializedSubscribers = true;
185204
foreach ($this->subscribers as $subscriber) {
186205
if (\is_array($subscriber)) {

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

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

33+
/**
34+
* @group legacy
35+
*/
3336
public function testDispatchEventRespectOrder()
3437
{
38+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: The second argument passed to Symfony\Bridge\Doctrine\ContainerAwareEventManager::__construct() is deprecated.');
39+
3540
$this->evm = new ContainerAwareEventManager($this->container, ['sub1', [['foo'], 'list1'], 'sub2']);
3641

3742
$this->container->set('list1', $listener1 = new MyListener());
3843
$this->container->set('sub1', $subscriber1 = new MySubscriber(['foo']));
3944
$this->container->set('sub2', $subscriber2 = new MySubscriber(['foo']));
4045

46+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::initializeSubscribers()" is deprecated.');
47+
4148
$this->assertSame([$subscriber1, $listener1, $subscriber2], array_values($this->evm->getListeners('foo')));
4249
}
4350

51+
/**
52+
* @group legacy
53+
*/
4454
public function testDispatchEvent()
4555
{
56+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: The second argument passed to Symfony\Bridge\Doctrine\ContainerAwareEventManager::__construct() is deprecated.');
57+
4658
$this->evm = new ContainerAwareEventManager($this->container, ['lazy4']);
4759

4860
$this->container->set('lazy4', $subscriber1 = new MySubscriber(['foo']));
@@ -57,6 +69,9 @@ public function testDispatchEvent()
5769
$this->container->set('lazy3', $listener5 = new MyListener());
5870
$this->evm->addEventListener('foo', $listener5 = new MyListener());
5971
$this->evm->addEventListener('bar', $listener5);
72+
73+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::initializeSubscribers()" is deprecated.');
74+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::addEventSubscriber()" is deprecated.');
6075
$this->evm->addEventSubscriber($subscriber2 = new MySubscriber(['bar']));
6176

6277
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
@@ -83,8 +98,13 @@ public function testDispatchEvent()
8398
$this->assertSame(0, $subscriber2->calledByEventNameCount);
8499
}
85100

101+
/**
102+
* @group legacy
103+
*/
86104
public function testAddEventListenerAndSubscriberAfterDispatchEvent()
87105
{
106+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: The second argument passed to Symfony\Bridge\Doctrine\ContainerAwareEventManager::__construct() is deprecated.');
107+
88108
$this->evm = new ContainerAwareEventManager($this->container, ['lazy7']);
89109

90110
$this->container->set('lazy7', $subscriber1 = new MySubscriber(['foo']));
@@ -101,6 +121,9 @@ public function testAddEventListenerAndSubscriberAfterDispatchEvent()
101121
$this->container->set('lazy3', $listener5 = new MyListener());
102122
$this->evm->addEventListener('foo', $listener5 = new MyListener());
103123
$this->evm->addEventListener('bar', $listener5);
124+
125+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::initializeSubscribers()" is deprecated.');
126+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::addEventSubscriber()" is deprecated.');
104127
$this->evm->addEventSubscriber($subscriber2 = new MySubscriber(['bar']));
105128

106129
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
@@ -120,6 +143,8 @@ public function testAddEventListenerAndSubscriberAfterDispatchEvent()
120143
$this->container->set('lazy6', $listener10 = new MyListener());
121144
$this->evm->addEventListener('foo', $listener10 = new MyListener());
122145
$this->evm->addEventListener('bar', $listener10);
146+
147+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::addEventSubscriber()" is deprecated.');
123148
$this->evm->addEventSubscriber($subscriber3 = new MySubscriber(['bar']));
124149

125150
$this->assertSame(1, $subscriber1->calledSubscribedEventsCount);
@@ -162,15 +187,21 @@ public function testAddEventListenerAndSubscriberAfterDispatchEvent()
162187
$this->assertSame(0, $subscriber3->calledByEventNameCount);
163188
}
164189

190+
/**
191+
* @group legacy
192+
*/
165193
public function testGetListenersForEvent()
166194
{
195+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: The second argument passed to Symfony\Bridge\Doctrine\ContainerAwareEventManager::__construct() is deprecated.');
196+
167197
$this->evm = new ContainerAwareEventManager($this->container, ['lazy2']);
168198

169199
$this->container->set('lazy', $listener1 = new MyListener());
170200
$this->container->set('lazy2', $subscriber1 = new MySubscriber(['foo']));
171201
$this->evm->addEventListener('foo', 'lazy');
172202
$this->evm->addEventListener('foo', $listener2 = new MyListener());
173203

204+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::initializeSubscribers()" is deprecated.');
174205
$this->assertSame([$subscriber1, $listener1, $listener2], array_values($this->evm->getListeners('foo')));
175206
}
176207

@@ -188,18 +219,28 @@ public function testGetListeners()
188219
$this->assertSame([$listener1, $listener2], array_values($this->evm->getListeners()['foo']));
189220
}
190221

222+
/**
223+
* @group legacy
224+
*/
191225
public function testGetAllListeners()
192226
{
193227
$this->container->set('lazy', $listener1 = new MyListener());
228+
229+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::initializeSubscribers()" is deprecated.');
194230
$this->evm->addEventListener('foo', 'lazy');
195231
$this->evm->addEventListener('foo', $listener2 = new MyListener());
196232

197233
$this->assertSame([$listener1, $listener2], array_values($this->evm->getAllListeners()['foo']));
198234
}
199235

236+
/**
237+
* @group legacy
238+
*/
200239
public function testRemoveEventListener()
201240
{
202241
$this->container->set('lazy', $listener1 = new MyListener());
242+
243+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::initializeSubscribers()" is deprecated.');
203244
$this->evm->addEventListener('foo', 'lazy');
204245
$this->evm->addEventListener('foo', $listener2 = new MyListener());
205246

@@ -210,9 +251,14 @@ public function testRemoveEventListener()
210251
$this->assertSame([], $this->evm->getListeners('foo'));
211252
}
212253

254+
/**
255+
* @group legacy
256+
*/
213257
public function testRemoveEventListenerAfterDispatchEvent()
214258
{
215259
$this->container->set('lazy', $listener1 = new MyListener());
260+
261+
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Method "Symfony\Bridge\Doctrine\ContainerAwareEventManager::initializeSubscribers()" is deprecated.');
216262
$this->evm->addEventListener('foo', 'lazy');
217263
$this->evm->addEventListener('foo', $listener2 = new MyListener());
218264

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