/** * 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')); }
/** * 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')); }