Symfony\Bundle\FrameworkBundle\Debug\TraceableEventDispatcher::doDispatch PHP Method

doDispatch() protected method

{@inheritDoc}
protected doDispatch ( $listeners, $eventName, Symfony\Component\EventDispatcher\Event $event )
$event Symfony\Component\EventDispatcher\Event
    protected function doDispatch($listeners, $eventName, Event $event)
    {
        foreach ($listeners as $listener) {
            call_user_func($listener, $event);

            $info = $this->getListenerInfo($listener, $eventName);

            if (null !== $this->logger) {
                $this->logger->debug(sprintf('Notified event "%s" to listener "%s".', $eventName, $info['pretty']));
            }

            $this->called[$eventName.'.'.$info['pretty']] = $info;

            if ($event->isPropagationStopped()) {
                if (null !== $this->logger) {
                    $this->logger->debug(sprintf('Listener "%s" stopped propagation of the event "%s".', $info['pretty'], $eventName));

                    $skippedListeners = $this->getListeners($eventName);
                    $skipped = false;

                    foreach ($skippedListeners as $skippedListener) {
                        if ($skipped) {
                            if (is_object($skippedListener)) {
                                $typeDefinition = get_class($skippedListener);
                            } elseif (is_array($skippedListener)) {
                                if (is_object($skippedListener[0])) {
                                    $typeDefinition = get_class($skippedListener[0]);
                                } else {
                                    $typeDefinition = implode('::', $skippedListener);
                                }
                            } else {
                                $typeDefinition = $skippedListener;
                            }
                            $this->logger->debug(sprintf('Listener "%s" was not called for event "%s".', $typeDefinition, $eventName));
                        }

                        if ($skippedListener === $listener) {
                            $skipped = true;
                        }
                    }
                }

                break;
            }
        }
    }