[EventDispatcher] fixed bug in EventDispatcher::disconnect if the second argument is null or ommitted

This commit is contained in:
Benjamin Zikarsky 2010-10-13 02:56:04 +02:00 committed by Fabien Potencier
parent c1e873d1b0
commit d376596f7e
2 changed files with 9 additions and 0 deletions

View File

@ -51,6 +51,11 @@ class EventDispatcher
return false;
}
if (null === $listener) {
unset($this->listeners[$name]);
return;
}
foreach ($this->listeners[$name] as $priority => $callables) {
foreach ($callables as $i => $callable) {
if ($listener === $callable) {

View File

@ -30,6 +30,10 @@ class EventDispatcherTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(array('listenToBarBar'), $dispatcher->getListeners('barbar'), '->disconnect() disconnects a listener for an event name');
$this->assertFalse($dispatcher->disconnect('foobar', 'listen'), '->disconnect() returns false if the listener does not exist');
$dispatcher->disconnect('bar');
$this->assertEquals(array(), $dispatcher->getListeners('bar'), '->disconnect() without a listener disconnects all listeners of for an event name');
$this->assertEquals(array('listenToBarBar'), $dispatcher->getListeners('barbar'), '->disconnect() without a listener disconnects all listeners of for an event name');
}
public function testGetHasListeners()