public function ContainerAwareEventDispatcher::removeListener

Overrides EventDispatcher::removeListener

See also

EventDispatcherInterface::removeListener

File

drupal/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php, line 75

Class

ContainerAwareEventDispatcher
Lazily loads listeners and subscribers from the dependency injection container

Namespace

Symfony\Component\EventDispatcher

Code

public function removeListener($eventName, $listener) {
  $this
    ->lazyLoad($eventName);
  if (isset($this->listeners[$eventName])) {
    foreach ($this->listeners[$eventName] as $key => $l) {
      foreach ($this->listenerIds[$eventName] as $i => $args) {
        list($serviceId, $method, $priority) = $args;
        if ($key === $serviceId . '.' . $method) {
          if ($listener === array(
            $l,
            $method,
          )) {
            unset($this->listeners[$eventName][$key]);
            if (empty($this->listeners[$eventName])) {
              unset($this->listeners[$eventName]);
            }
            unset($this->listenerIds[$eventName][$i]);
            if (empty($this->listenerIds[$eventName])) {
              unset($this->listenerIds[$eventName]);
            }
          }
        }
      }
    }
  }
  parent::removeListener($eventName, $listener);
}