You are here

public function DebugHandlersListener::configure in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure()

Configures the error handler.

Parameters

Event|null $event The triggering event:

File

vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php, line 63

Class

DebugHandlersListener
Configures errors and exceptions handlers.

Namespace

Symfony\Component\HttpKernel\EventListener

Code

public function configure(Event $event = null) {
  if (!$this->firstCall) {
    return;
  }
  $this->firstCall = false;
  if ($this->logger || null !== $this->throwAt) {
    $handler = set_error_handler('var_dump', 0);
    $handler = is_array($handler) ? $handler[0] : null;
    restore_error_handler();
    if ($handler instanceof ErrorHandler) {
      if ($this->logger) {
        $handler
          ->setDefaultLogger($this->logger, $this->levels);
        if (is_array($this->levels)) {
          $scream = 0;
          foreach ($this->levels as $type => $log) {
            $scream |= $type;
          }
        }
        else {
          $scream = null === $this->levels ? E_ALL | E_STRICT : $this->levels;
        }
        if ($this->scream) {
          $handler
            ->screamAt($scream);
        }
        $this->logger = $this->levels = null;
      }
      if (null !== $this->throwAt) {
        $handler
          ->throwAt($this->throwAt, true);
      }
    }
  }
  if (!$this->exceptionHandler) {
    if ($event instanceof KernelEvent) {
      $this->exceptionHandler = array(
        $event
          ->getKernel(),
        'terminateWithException',
      );
    }
    elseif ($event instanceof ConsoleEvent && ($app = $event
      ->getCommand()
      ->getApplication())) {
      $output = $event
        ->getOutput();
      if ($output instanceof ConsoleOutputInterface) {
        $output = $output
          ->getErrorOutput();
      }
      $this->exceptionHandler = function ($e) use ($app, $output) {
        $app
          ->renderException($e, $output);
      };
    }
  }
  if ($this->exceptionHandler) {
    $handler = set_exception_handler('var_dump');
    $handler = is_array($handler) ? $handler[0] : null;
    restore_exception_handler();
    if ($handler instanceof ErrorHandler) {
      $h = $handler
        ->setExceptionHandler('var_dump') ?: $this->exceptionHandler;
      $handler
        ->setExceptionHandler($h);
      $handler = is_array($h) ? $h[0] : null;
    }
    if ($handler instanceof ExceptionHandler) {
      $handler
        ->setHandler($this->exceptionHandler);
      if (null !== $this->fileLinkFormat) {
        $handler
          ->setFileLinkFormat($this->fileLinkFormat);
      }
    }
    $this->exceptionHandler = null;
  }
}