Skip to content

Commit

Permalink
Merge pull request #6766 from robbertnoordzij/fix-offing-eventlisteners
Browse files Browse the repository at this point in the history
Fix offing all event listeners for a specific event
  • Loading branch information
markstory committed Jun 9, 2015
2 parents ca1789a + 7e67fe6 commit 19e5540
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/Event/EventManager.php
Expand Up @@ -277,6 +277,10 @@ public function off($eventKey, $callable = null)
$this->_detachSubscriber($callable, $eventKey);
return;
}
if ($callable === null && is_string($eventKey)) {
unset($this->_listeners[$eventKey]);
return;
}
if ($callable === null) {
foreach (array_keys($this->_listeners) as $name) {
$this->off($name, $eventKey);
Expand Down
18 changes: 18 additions & 0 deletions tests/TestCase/Event/EventManagerTest.php
Expand Up @@ -226,6 +226,24 @@ public function testOffFromAll()
$this->assertEquals([], $manager->listeners('fake.event'));
}

/**
* Tests off'ing all listeners for an event
*/
public function testRemoveAllListeners()
{
$manager = new EventManager();
$manager->on('fake.event', ['AClass', 'aMethod']);
$manager->on('another.event', ['priority' => 1], 'fakeFunction');

$manager->off('fake.event');

$expected = [
['callable' => 'fakeFunction']
];
$this->assertEquals($expected, $manager->listeners('another.event'));
$this->assertEquals([], $manager->listeners('fake.event'));
}

/**
* Tests detaching an event from a event key queue
*
Expand Down

0 comments on commit 19e5540

Please sign in to comment.