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;
}
}
}