You are here

protected function TraceableEventDispatcher::preDispatch in Zircon Profile 8

Same name in this branch
  1. 8 vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php \Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher::preDispatch()
  2. 8 vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher::preDispatch()
Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher::preDispatch()

Called before dispatching the event.

Parameters

string $eventName The event name:

Event $event The event:

Overrides TraceableEventDispatcher::preDispatch

File

vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php, line 47

Class

TraceableEventDispatcher
Collects some data about event listeners.

Namespace

Symfony\Component\HttpKernel\Debug

Code

protected function preDispatch($eventName, Event $event) {
  switch ($eventName) {
    case KernelEvents::REQUEST:
      $this->stopwatch
        ->openSection();
      break;
    case KernelEvents::VIEW:
    case KernelEvents::RESPONSE:

      // stop only if a controller has been executed
      if ($this->stopwatch
        ->isStarted('controller')) {
        $this->stopwatch
          ->stop('controller');
      }
      break;
    case KernelEvents::TERMINATE:
      $token = $event
        ->getResponse()->headers
        ->get('X-Debug-Token');

      // There is a very special case when using built-in AppCache class as kernel wrapper, in the case
      // of an ESI request leading to a `stale` response [B]  inside a `fresh` cached response [A].
      // In this case, `$token` contains the [B] debug token, but the  open `stopwatch` section ID
      // is equal to the [A] debug token. Trying to reopen section with the [B] token throws an exception
      // which must be caught.
      try {
        $this->stopwatch
          ->openSection($token);
      } catch (\LogicException $e) {
      }
      break;
  }
}