detach() публичный Метод

Removes a listener from the active listeners.
public detach ( callback | CakeEventListener $callable, string $eventKey = null ) : void
$callable callback | CakeEventListener any valid PHP callback type or an instance of CakeEventListener
$eventKey string The event unique identifier name with which the callback has been associated
Результат void
Пример #1
0
 /**
  * Remove a listener from Crud.
  *
  * This will also detach it from the EventManager if it's attached.
  *
  * @param string $name
  * @return boolean
  */
 public function removeListener($name)
 {
     $listeners = $this->config('listeners');
     if (!array_key_exists($name, $listeners)) {
         return false;
     }
     if (isset($this->_listenerInstances[$name])) {
         $this->_eventManager->detach($this->_listenerInstances[$name]);
         unset($this->_listenerInstances[$name]);
     }
     unset($listeners[$name]);
     $this->settings['listeners'] = $listeners;
 }
 /**
  * Load a single event class attached to Crud
  *
  * @param string $name
  * @return void
  */
 protected function _loadListener($name)
 {
     $subject = $this->_getSubject();
     $config = $this->config(sprintf('listenerClassMap.%s', $name));
     list($plugin, $class) = pluginSplit($config, true);
     App::uses($class, $plugin . 'Controller/Event');
     // Make sure to cleanup duplicate events
     if (isset($this->_listeners[$name])) {
         $this->_eventManager->detach($this->_listeners[$name]);
         unset($this->_listeners[$name]);
     }
     $this->_listeners[$name] = new $class($subject);
     $this->_eventManager->attach($this->_listeners[$name]);
 }
Пример #3
0
 /**
  * Removes a listener from the active listeners.
  * @see CakeEventManager::detach()
  * @return void
  */
 public function detach($callable, $eventKey = null)
 {
     if (is_object($callable)) {
         $key = get_class($callable);
         unset($this->_listenersMap[$key]);
     }
     parent::detach($callable, $eventKey);
 }
Пример #4
0
 /**
  * Tests subscribing a listener object and firing the events it subscribed to
  *
  * @return void
  */
 public function testDetachSubscriber()
 {
     $manager = new CakeEventManager();
     $listener = $this->getMock('CustomTestEventListerner', array('secondListenerFunction'));
     $manager->attach($listener);
     $expected = array(array('callable' => array($listener, 'secondListenerFunction'), 'passParams' => true));
     $this->assertEquals($expected, $manager->listeners('another.event'));
     $expected = array(array('callable' => array($listener, 'listenerFunction'), 'passParams' => false));
     $this->assertEquals($expected, $manager->listeners('fake.event'));
     $manager->detach($listener);
     $this->assertEquals(array(), $manager->listeners('fake.event'));
     $this->assertEquals(array(), $manager->listeners('another.event'));
 }