示例#1
0
 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'));
 }
示例#2
0
  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');