You are here

public function ContainerAwareEventDispatcher::getListeners in Zircon Profile 8

Same name in this branch
  1. 8 vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php \Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher::getListeners()
  2. 8 core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php \Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher::getListeners()
Same name and namespace in other branches
  1. 8.0 core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php \Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher::getListeners()

Gets the listeners of a specific event or all listeners sorted by descending priority.

Parameters

string $eventName The name of the event:

Return value

array The event listeners for the specified event, or all event listeners by event name

Overrides EventDispatcherInterface::getListeners

1 call to ContainerAwareEventDispatcher::getListeners()
ContainerAwareEventDispatcher::hasListeners in core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php
Checks whether an event has any registered listeners.

File

core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php, line 130
Contains \Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher.

Class

ContainerAwareEventDispatcher
A performance optimized container aware event dispatcher.

Namespace

Drupal\Component\EventDispatcher

Code

public function getListeners($event_name = NULL) {
  $result = [];
  if ($event_name === NULL) {

    // If event name was omitted, collect all listeners of all events.
    foreach (array_keys($this->listeners) as $event_name) {
      $listeners = $this
        ->getListeners($event_name);
      if (!empty($listeners)) {
        $result[$event_name] = $listeners;
      }
    }
  }
  elseif (isset($this->listeners[$event_name])) {

    // Sort listeners if necessary.
    if (isset($this->unsorted[$event_name])) {
      krsort($this->listeners[$event_name]);
      unset($this->unsorted[$event_name]);
    }

    // Collect listeners and resolve callables if necessary.
    foreach ($this->listeners[$event_name] as $priority => &$definitions) {
      foreach ($definitions as $key => &$definition) {
        if (!isset($definition['callable'])) {
          $definition['callable'] = [
            $this->container
              ->get($definition['service'][0]),
            $definition['service'][1],
          ];
        }
        $result[] = $definition['callable'];
      }
    }
  }
  return $result;
}