CakeEventManager::listeners PHP Method

listeners() public method

Returns a list of all listeners for an eventKey in the order they should be called
public listeners ( string $eventKey ) : array
$eventKey string
return array
    public function listeners($eventKey)
    {
        $localListeners = array();
        $priorities = array();
        if (!$this->_isGlobal) {
            $localListeners = $this->prioritisedListeners($eventKey);
            $localListeners = empty($localListeners) ? array() : $localListeners;
        }
        $globalListeners = self::instance()->prioritisedListeners($eventKey);
        $globalListeners = empty($globalListeners) ? array() : $globalListeners;
        $priorities = array_merge(array_keys($globalListeners), array_keys($localListeners));
        $priorities = array_unique($priorities);
        asort($priorities);
        $result = array();
        foreach ($priorities as $priority) {
            if (isset($globalListeners[$priority])) {
                $result = array_merge($result, $globalListeners[$priority]);
            }
            if (isset($localListeners[$priority])) {
                $result = array_merge($result, $localListeners[$priority]);
            }
        }
        return $result;
    }

Usage Example

Example #1
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'));
 }