public function testRemoveEventListener() { $foo = new Foo(); $foo->addEventListener('event', $callback1 = function () { }); $foo->addEventListener('event', function () { }); $foo->addEventListener('event', function () { }); $this->assertCount(3, $foo->getEventListener('event')->getCallbacks()); $foo->removeEventListener('event', $callback1); $this->assertCount(2, $foo->getEventListener('event')->getCallbacks()); $foo->removeEventListener('event'); $this->assertFalse($foo->hasEventListener('event')); $foo->addEventListener('event', function () { }); $foo->removeEventListener($foo->getEventListener('event')); $this->assertFalse($foo->hasEventListener('event')); $foo->addEventListener('event', function () { }); $foo->removeAllEventListeners(); $this->assertFalse($foo->hasEventListener('event')); }
public function getEventListener($event_name) { if ( ! isset($this->_event_listeners[$event_name]) ) $this->_event_listeners[$event_name] = new SplObjectStorage(); return $this->_event_listeners[$event_name]; } } class Foo { use EventDispatcher; } $foo = new Foo; $f = function($data) { var_dump($data); }; $foo->addEventListener('bar', $f); $foo->notify('bar', array('a' => 'b')); $foo->notify('none'); $foo->removeEventListener('bar', $f); $foo->notify('bar'); $foo->addEventListener('bar', 'count');