8000 [DoctrineBridge] Remove deprecated classes and `ContainerAwareEventMa… · symfony/symfony@1de5b05 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1de5b05

Browse files
[DoctrineBridge] Remove deprecated classes and ContainerAwareEventManager::getListeners() deprecation
1 parent f0a5f45 commit 1de5b05

9 files changed

+28
-266
lines changed

UPGRADE-7.0.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ Symfony 6.4 and Symfony 7.0 will be released simultaneously at the end of Novemb
55
release process, both versions will have the same features, but Symfony 7.0 won't include any deprecated features.
66
To upgrade, make sure to resolve all deprecation notices.
77

8+
DoctrineBridge
9+
--------------
10+
11+
* Removed `DoctrineDbalCacheAdapterSchemaSubscriber`, use `DoctrineDbalCacheAdapterSchemaListener` instead
12+
* Removed `MessengerTransportDoctrineSchemaSubscriber`, use `MessengerTransportDoctrineSchemaListener` instead
13+
* Removed `RememberMeTokenProviderDoctrineSchemaSubscriber`, use `RememberMeTokenProviderDoctrineSchemaListener` instead
14+
* `ContainerAwareEventManager::getListeners()` must be called with an event name
15+
* DoctrineBridge now requires `doctrine/event-manager:^2`
16+
817
Serializer
918
----------
1019

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"composer-runtime-api": ">=2.1",
3838
"ext-xml": "*",
3939
"friendsofphp/proxy-manager-lts": "^1.0.2",
40-
"doctrine/event-manager": "^1.2|^2",
40+
"doctrine/event-manager": "^2",
4141
"doctrine/persistence": "^2|^3",
4242
"twig/twig": "^2.13|^3.0.4",
4343
"psr/cache": "^2.0|^3.0",

src/Symfony/Bridge/Doctrine/CHANGELOG.md

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

4+
7.0
5+
---
6+
7+
* Remove `DoctrineDbalCacheAdapterSchemaSubscriber`, `MessengerTransportDoctrineSchemaSubscriber` and `RememberMeTokenProviderDoctrineSchemaSubscriber`
8+
* `ContainerAwareEventManager::getListeners()` must be called with an event name
9+
* DoctrineBridge now requires `doctrine/event-manager:^2`
10+
411
6.3
512
---
613

src/Symfony/Bridge/Doctrine/ContainerAwareEventManager.php

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,8 @@ public function dispatchEvent($eventName, EventArgs $eventArgs = null): void
6666
/**
6767
* @return object[][]
6868
*/
69-
public function getListeners($event = null): array
69+
public function getListeners(string $event): array
7070
{
71-
if (null === $event) {
72-
trigger_deprecation('symfony/doctrine-bridge', '6.2', 'Calling "%s()" without an event name is deprecated. Call "getAllListeners()" instead.', __METHOD__);
73-
74-
return $this->getAllListeners();
75-
}
7671
if (!$this->initializedSubscribers) {
7772
$this->initializeSubscribers();
7873
}
@@ -107,7 +102,7 @@ public function hasListeners($event): bool
107102
return isset($this->listeners[$event]) && $this->listeners[$event];
108103
}
109104

110-
public function addEventListener($events, $listener): void
105+
public function addEventListener($events, object|string $listener): void
111106
{
112107
if (!$this->initializedSubscribers) {
113108
$this->initializeSubscribers();
@@ -188,12 +183,8 @@ private function initializeSubscribers(): void
188183
$this->addEventListener(...$listener);
189184
continue;
190185
}
191-
if (\is_string($listener)) {
192-
$listener = $this->container->get($listener);
193-
}
194-
// throw new \InvalidArgumentException(sprintf('Using Doctrine subscriber "%s" is not allowed, declare it as a listener instead.', \is_object($listener) ? $listener::class : $listener));
195-
trigger_deprecation('symfony/doctrine-bridge', '6.3', 'Using Doctrine subscribers as services is deprecated, declare listeners instead');
196-
parent::addEventSubscriber($listener);
186+
187+
throw new \InvalidArgumentException(sprintf('Using Doctrine subscriber "%s" is not allowed, declare it as a listener instead.', \is_object($listener) ? $listener::class : $listener));
197188
}
198189
}
199190

src/Symfony/Bridge/Doctrine/SchemaListener/DoctrineDbalCacheAdapterSchemaSubscriber.php

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/Symfony/Bridge/Doctrine/SchemaListener/MessengerTransportDoctrineSchemaSubscriber.php

Lines changed: 0 additions & 43 deletions
This file was deleted.

src/Symfony/Bridge/Doctrine/SchemaListener/RememberMeTokenProviderDoctrineSchemaSubscriber.php

Lines changed: 0 additions & 39 deletions
This file was deleted.

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

Lines changed: 6 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,13 @@ public function testDispatchEventRespectOrder()
4040
$this->assertSame([$listener1, $listener2], array_values($this->evm->getListeners('foo')));
4141
}
4242

43-
/**
44-
* @group legacy
45-
*/
46-
public function testDispatchEventRespectOrderWithSubscribers()
43+
public function testUsingDoctrineSubscribersThrows()
4744
{
48-
$this->evm = new ContainerAwareEventManager($this->container, ['sub1', 'sub2']);
45+
$this->evm = new ContainerAwareEventManager($this->container, [new MySubscriber(['foo'])]);
4946

50-
$this->container->set('sub1', $subscriber1 = new MySubscriber(['foo']));
51-
$this->container->set('sub2', $subscriber2 = new MySubscriber(['foo']));
52-
53-
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Using Doctrine subscribers as services is deprecated, declare listeners instead');
54-
$this->assertSame([$subscriber1, $subscriber2], array_values($this->evm->getListeners('foo')));
47+
$this->expectException(\InvalidArgumentException::class);
48+
$this->expectExceptionMessage('Using Doctrine subscriber "Symfony\Bridge\Doctrine\Tests\MySubscriber" is not allowed, declare it as a listener instead.');
49+
$this->evm->getListeners('foo');
5550
}
5651

5752
public function testDispatchEvent()
@@ -81,40 +76,6 @@ public function testDispatchEvent()
8176
$this->assertSame(1, $listener5->calledByEventNameCount);
8277
}
8378

84-
/**
85-
* @group legacy
86-
*/
87-
public function testDispatchEventWithSubscribers()
88-
{
89-
$this->evm = new ContainerAwareEventManager($this->container, ['lazy4']);
90-
91-
$this->container->set('lazy4', $subscriber1 = new MySubscriber(['foo']));
92-
$this->assertSame(0, $subscriber1->calledSubscribedEventsCount);
93-
94-
$this->container->set('lazy1', $listener1 = new MyListener());
95-
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Using Doctrine subscribers as services is deprecated, declare listeners instead');
96-
$this->evm->addEventListener('foo', 'lazy1');
97-
$this->evm->addEventListener('foo', $listener2 = new MyListener());
98-
$this->evm->addEventSubscriber($subscriber2 = new MySubscriber(['bar']));
99-
100-
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
101-
102-
$this->evm->dispatchEvent('foo');
103-
$this->evm->dispatchEvent('bar');
104-
105-
$this->assertSame(1, $subscriber1->calledSubscribedEventsCount);
106-
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
107-
108-
$this->assertSame(0, $listener1->calledByInvokeCount);
109-
$this->assertSame(1, $listener1->calledByEventNameCount);
110-
$this->assertSame(0, $listener2->calledByInvokeCount);
111-
$this->assertSame(1, $listener2->calledByEventNameCount);
112-
$this->assertSame(0, $subscriber1->calledByInvokeCount);
113-
$this->assertSame(1, $subscriber1->calledByEventNameCount);
114-
$this->assertSame(1, $subscriber2->calledByInvokeCount);
115-
$this->assertSame(0, $subscriber2->calledByEventNameCount);
116-
}
117-
11879
public function testAddEventListenerAfterDispatchEvent()
11980
{
12081
$this->container->set('lazy1', $listener1 = new MyListener());
@@ -166,99 +127,14 @@ public function testAddEventListenerAfterDispatchEvent()
166127
$this->assertSame(1, $listener10->calledByEventNameCount);
167128
}
168129

169-
/**
170-
* @group legacy
171-
*/
172-
public function testAddEventListenerAndSubscriberAfterDispatchEvent()
173-
{
174-
$this->evm = new ContainerAwareEventManager($this->container, ['lazy7']);
175-
176-
$this->container->set('lazy7', $subscriber1 = new MySubscriber(['foo']));
177-
$this->assertSame(0, $subscriber1->calledSubscribedEventsCount);
178-
179-
$this->container->set('lazy1', $listener1 = new MyListener());
180-
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Using Doctrine subscribers as services is deprecated, declare listeners instead');
181-
$this->evm->addEventListener('foo', 'lazy1');
182-
$this->assertSame(1, $subscriber1->calledSubscribedEventsCount);
183-
184-
$this->evm->addEventSubscriber($subscriber2 = new MySubscriber(['bar']));
185-
186-
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
187-
188-
$this->evm->dispatchEvent('foo');
189-
$this->evm->dispatchEvent('bar');
190-
191-
$this->assertSame(1, $subscriber1->calledSubscribedEventsCount);
192-
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
193-
194-
$this->container->set('lazy6', $listener2 = new MyListener());
195-
$this->evm->addEventListener('foo', $listener2 = new MyListener());
196-
$this->evm->addEventListener('bar', $listener2);
197-
$this->evm->addEventSubscriber($subscriber3 = new MySubscriber(['bar']));
198-
199-
$this->assertSame(1, $subscriber1->calledSubscribedEventsCount);
200-
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
201-
$this->assertSame(1, $subscriber3->calledSubscribedEventsCount);
202-
203-
$this->evm->dispatchEvent('foo');
204-
$this->evm->dispatchEvent('bar');
205-
206-
$this->assertSame(1, $subscriber1->calledSubscribedEventsCount);
207-
$this->assertSame(1, $subscriber2->calledSubscribedEventsCount);
208-
$this->assertSame(1, $subscriber3->calledSubscribedEventsCount);
209-
210-
$this->assertSame(0, $listener1->calledByInvokeCount);
211-
$this->assertSame(2, $listener1->calledByEventNameCount);
212-
$this->assertSame(0, $subscriber1->calledByInvokeCount);
213-
$this->assertSame(2, $subscriber1->calledByEventNameCount);
214-
$this->assertSame(2, $subscriber2->calledByInvokeCount);
215-
$this->assertSame(0, $subscriber2->calledByEventNameCount);
216-
217-
$this->assertSame(1, $listener2->calledByInvokeCount);
218-
$this->assertSame(1, $listener2->calledByEventNameCount);
219-
$this->assertSame(1, $subscriber3->calledByInvokeCount);
220-
$this->assertSame(0, $subscriber3->calledByEventNameCount);
221-
}
222-
223130
public function testGetListenersForEvent()
224131
{
225-
$this->container->set('lazy', $listener1 = new MyListener());
226-
$this->evm->addEventListener('foo', 'lazy');
132+
$this->evm->addEventListener('foo', $listener1 = new MyListener());
227133
$this->evm->addEventListener('foo', $listener2 = new MyListener());
228134

229135
$this->assertSame([$listener1, $listener2], array_values($this->evm->getListeners('foo')));
230136
}
231137

232-
/**
233-
* @group legacy
234-
*/
235-
public function testGetListenersForEventWhenSubscribersArePresent()
236-
{
237-
$this->evm = new ContainerAwareEventManager($this->container, ['lazy2']);
238-
239-
$this->container->set('lazy', $listener1 = new MyListener());
240-
$this->container->set('lazy2', $subscriber1 = new MySubscriber(['foo']));
241-
$this->expectDeprecation('Since symfony/doctrine-bridge 6.3: Using Doctrine subscribers as services is deprecated, declare listeners instead');
242-
$this->evm->addEventListener('foo', 'lazy');
243-
$this->evm->addEventListener('foo', $listener2 = new MyListener());
244-
245-
$this->assertSame([$subscriber1, $listener1, $listener2], array_values($this->evm->getListeners('foo')));
246-
}
247-
248-
/**
249-
* @group legacy
250-
*/
251-
public function testGetListeners()
252-
{
253-
$this->container->set('lazy', $listener1 = new MyListener());
254-
$this->evm->addEventListener('foo', 'lazy');
255-
$this->evm->addEventListener('foo', $listener2 = new MyListener());
256-
257-
$this->expectDeprecation('Since symfony/doctrine-bridge 6.2: Calling "Symfony\Bridge\Doctrine\ContainerAwareEventManager::getListeners()" without an event name is deprecated. Call "getAllListeners()" instead.');
258-
259-
$this->assertSame([$listener1, $listener2], array_values($this->evm->getListeners()['foo']));
260-
}
261-
262138
public function testGetAllListeners()
263139
{
264140
$this->container->set('lazy', $listener1 = new MyListener());

src/Symfony/Bridge/Doctrine/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
],
1818
"require": {
1919
"php": ">=8.2",
20-
"doctrine/event-manager": "^1.2|^2",
20+
"doctrine/event-manager": "^2",
2121
"doctrine/persistence": "^2|^3",
2222
"symfony/deprecation-contracts": "^2.5|^3",
2323
"symfony/polyfill-ctype": "~1.8",

0 commit comments

Comments
 (0)
0