Skip to content

Commit 2ef2a77

Browse files
Merge branch '4.4' into 5.2
* 4.4: [SecurityBundle] role_names variable instead of roles [PhpUnitBridge] fix reporting deprecations when they come from DebugClassLoader [ErrorHandler] fix parsing return types in DebugClassLoader [ErrorHandler] fix handling messages with null bytes from anonymous classes Restore priority for eventSubscribers
2 parents c348e59 + 579d324 commit 2ef2a77

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

ContainerAwareEventManager.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,11 +164,22 @@ private function initializeListeners(string $eventName)
164164
private function initializeSubscribers()
165165
{
166166
$this->initializedSubscribers = true;
167+
168+
$eventListeners = $this->listeners;
169+
// reset eventListener to respect priority: EventSubscribers have a higher priority
170+
$this->listeners = [];
167171
foreach ($this->subscribers as $id => $subscriber) {
168172
if (\is_string($subscriber)) {
169173
parent::addEventSubscriber($this->subscribers[$id] = $this->container->get($subscriber));
170174
}
171175
}
176+
foreach ($eventListeners as $event => $listeners) {
177+
if (!isset($this->listeners[$event])) {
178+
$this->listeners[$event] = [];
179+
}
180+
$this->listeners[$event] += $listeners;
181+
}
182+
$this->subscribers = [];
172183
}
173184

174185
/**

Tests/ContainerAwareEventManagerTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,14 @@ public function testAddEventListenerAndSubscriberAfterDispatchEvent()
146146

147147
public function testGetListenersForEvent()
148148
{
149+
$this->evm = new ContainerAwareEventManager($this->container, ['lazy2']);
150+
149151
$this->container->set('lazy', $listener1 = new MyListener());
152+
$this->container->set('lazy2', $subscriber1 = new MySubscriber(['foo']));
150153
$this->evm->addEventListener('foo', 'lazy');
151154
$this->evm->addEventListener('foo', $listener2 = new MyListener());
152155

153-
$this->assertSame([$listener1, $listener2], array_values($this->evm->getListeners('foo')));
156+
$this->assertSame([$subscriber1, $listener1, $listener2], array_values($this->evm->getListeners('foo')));
154157
}
155158

156159
public function testGetListeners()

0 commit comments

Comments
 (0)