From 39fabab013051a329f627c3f748c2fdb47a9cbfd Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Tue, 23 Aug 2011 16:41:08 -0400 Subject: [PATCH] [EventDispatcher] Fix removeSubscriber() to work with priority syntax --- .../Component/EventDispatcher/EventDispatcher.php | 4 ++-- .../Component/EventDispatcher/EventDispatcherTest.php | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/EventDispatcher/EventDispatcher.php b/src/Symfony/Component/EventDispatcher/EventDispatcher.php index 467cef8a1b0c..c1b16002d249 100644 --- a/src/Symfony/Component/EventDispatcher/EventDispatcher.php +++ b/src/Symfony/Component/EventDispatcher/EventDispatcher.php @@ -127,8 +127,8 @@ public function addSubscriber(EventSubscriberInterface $subscriber) */ public function removeSubscriber(EventSubscriberInterface $subscriber) { - foreach ($subscriber->getSubscribedEvents() as $eventName => $method) { - $this->removeListener($eventName, array($subscriber, $method)); + foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { + $this->removeListener($eventName, array($subscriber, is_string($params) ? $params : $params[0])); } } diff --git a/tests/Symfony/Tests/Component/EventDispatcher/EventDispatcherTest.php b/tests/Symfony/Tests/Component/EventDispatcher/EventDispatcherTest.php index 7a5becd4e276..90d31334f58e 100644 --- a/tests/Symfony/Tests/Component/EventDispatcher/EventDispatcherTest.php +++ b/tests/Symfony/Tests/Component/EventDispatcher/EventDispatcherTest.php @@ -198,6 +198,15 @@ public function testRemoveSubscriber() $this->assertFalse($this->dispatcher->hasListeners(self::preFoo)); $this->assertFalse($this->dispatcher->hasListeners(self::postFoo)); } + + public function testRemoveSubscriberWithPriorities() + { + $eventSubscriber = new TestEventSubscriberWithPriorities(); + $this->dispatcher->addSubscriber($eventSubscriber); + $this->assertTrue($this->dispatcher->hasListeners(self::preFoo)); + $this->dispatcher->removeSubscriber($eventSubscriber); + $this->assertFalse($this->dispatcher->hasListeners(self::preFoo)); + } } class TestEventListener