/** * Configures the error handler. * * @param Event|null $event The triggering event */ 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'); $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 = $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; } }
/** * Configures the error handler. * * @param Event|null $event The triggering event * @param string|null $eventName The triggering event name * @param EventDispatcherInterface|null $eventDispatcher The dispatcher used to trigger $event */ public function configure(Event $event = null, $eventName = null, EventDispatcherInterface $eventDispatcher = null) { if (null !== $eventDispatcher) { foreach (array_keys(static::getSubscribedEvents()) as $name) { $eventDispatcher->removeListener($name, array($this, 'configure')); } } $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; } }