Thanks to visit codestin.com
Credit goes to github.com

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)