/**
  * Remove an object from the registry.
  *
  * If this registry has an event manager, the object will be detached from any events as well.
  *
  * @param string $objectName The name of the object to remove from the registry.
  * @return void
  */
 public function unload($objectName)
 {
     if (empty($this->_loaded[$objectName])) {
         return;
     }
     $object = $this->_loaded[$objectName];
     if (isset($this->_eventManager)) {
         $this->_eventManager->detach($object);
     }
     unset($this->_loaded[$objectName]);
 }
 /**
  * Tests subscribing a listener object and firing the events it subscribed to
  *
  * @return void
  */
 public function testDetachSubscriber()
 {
     $manager = new EventManager();
     $listener = $this->getMock(__NAMESPACE__ . '\\CustomTestEventListener', array('secondListenerFunction'));
     $manager->attach($listener);
     $expected = array(array('callable' => array($listener, 'secondListenerFunction')));
     $this->assertEquals($expected, $manager->listeners('another.event'));
     $expected = array(array('callable' => array($listener, 'listenerFunction')));
     $this->assertEquals($expected, $manager->listeners('fake.event'));
     $manager->detach($listener);
     $this->assertEquals(array(), $manager->listeners('fake.event'));
     $this->assertEquals(array(), $manager->listeners('another.event'));
 }
示例#3
0
 /**
  * Tests subscribing a listener object and firing the events it subscribed to
  *
  * @return void
  */
 public function testDetachSubscriber()
 {
     $manager = new EventManager();
     $listener = $this->getMock(__NAMESPACE__ . '\\CustomTestEventListenerInterface', ['secondListenerFunction']);
     $manager->attach($listener);
     $expected = [['callable' => [$listener, 'secondListenerFunction']]];
     $this->assertEquals($expected, $manager->listeners('another.event'));
     $expected = [['callable' => [$listener, 'listenerFunction']]];
     $this->assertEquals($expected, $manager->listeners('fake.event'));
     $manager->detach($listener);
     $this->assertEquals([], $manager->listeners('fake.event'));
     $this->assertEquals([], $manager->listeners('another.event'));
 }