Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
DebugHandlersListener.php
001 <?php
002
003 /*
004 * This file is part of the Symfony package.
005 *
006 * (c) Fabien Potencier <fabien@symfony.com>
007 *
008 * For the full copyright and license information, please view the LICENSE
009 * file that was distributed with this source code.
010 */
011
012 namespace Symfony\Component\HttpKernel\EventListener;
013
014 use Psr\Log\LoggerInterface;
015 use Symfony\Component\Debug\ErrorHandler;
016 use Symfony\Component\Debug\ExceptionHandler;
017 use Symfony\Component\EventDispatcher\Event;
018 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
019 use Symfony\Component\HttpKernel\Event\KernelEvent;
020 use Symfony\Component\HttpKernel\KernelEvents;
021 use Symfony\Component\Console\ConsoleEvents;
022 use Symfony\Component\Console\Event\ConsoleEvent;
023 use Symfony\Component\Console\Output\ConsoleOutputInterface;
024
025 /**
026 * Configures errors and exceptions handlers.
027 *
028 * @author Nicolas Grekas <p@tchwork.com>
029 */
030 class DebugHandlersListener implements EventSubscriberInterface
031 {
032 private $exceptionHandler;
033 private $logger;
034 private $levels;
035 private $throwAt;
036 private $scream;
037 private $fileLinkFormat;
038 private $firstCall = true;
039
040 /**
041 * @param callable|null $exceptionHandler A handler that will be called on Exception
042 * @param LoggerInterface|null $logger A PSR-3 logger
043 * @param array|int $levels An array map of E_* to LogLevel::* or an integer bit field of E_* constants
044 * @param int|null $throwAt Thrown errors in a bit field of E_* constants, or null to keep the current value
045 * @param bool $scream Enables/disables screaming mode, where even silenced errors are logged
046 * @param string $fileLinkFormat The format for links to source files
047 */
048 public function __construct($exceptionHandler, LoggerInterface $logger = null, $levels = null, $throwAt = -1, $scream = true, $fileLinkFormat = null)
049 {
050 $this->exceptionHandler = $exceptionHandler;
051 $this->logger = $logger;
052 $this->levels = $levels;
053 $this->throwAt = is_numeric($throwAt) ? (int) $throwAt : (null === $throwAt ? null : ($throwAt ? -1 : null));
054 $this->scream = (bool) $scream;
055 $this->fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
056 }
057
058 /**
059 * Configures the error handler.
060 *
061 * @param Event|null $event The triggering event
062 */
063 public function configure(Event $event = null)
064 {
065 if (!$this->firstCall) {
066 return;
067 }
068 $this->firstCall = false;
069 if ($this->logger || null !== $this->throwAt) {
070 $handler = set_error_handler('var_dump');
071 $handler = is_array($handler) ? $handler[0] : null;
072 restore_error_handler();
073 if ($handler instanceof ErrorHandler) {
074 if ($this->logger) {
075 $handler->setDefaultLogger($this->logger, $this->levels);
076 if (is_array($this->levels)) {
077 $scream = 0;
078 foreach ($this->levels as $type => $log) {
079 $scream |= $type;
080 }
081 } else {
082 $scream = null === $this->levels ? E_ALL | E_STRICT : $this->levels;
083 }
084 if ($this->scream) {
085 $handler->screamAt($scream);
086 }
087 $this->logger = $this->levels = null;
088 }
089 if (null !== $this->throwAt) {
090 $handler->throwAt($this->throwAt, true);
091 }
092 }
093 }
094 if (!$this->exceptionHandler) {
095 if ($event instanceof KernelEvent) {
096 if (method_exists($event->getKernel(), 'terminateWithException')) {
097 $this->exceptionHandler = array($event->getKernel(), 'terminateWithException');
098 }
099 } elseif ($event instanceof ConsoleEvent && $app = $event->getCommand()->getApplication()) {
100 $output = $event->getOutput();
101 if ($output instanceof ConsoleOutputInterface) {
102 $output = $output->getErrorOutput();
103 }
104 $this->exceptionHandler = function ($e) use ($app, $output) {
105 $app->renderException($e, $output);
106 };
107 }
108 }
109 if ($this->exceptionHandler) {
110 $handler = set_exception_handler('var_dump');
111 $handler = is_array($handler) ? $handler[0] : null;
112 restore_exception_handler();
113 if ($handler instanceof ErrorHandler) {
114 $h = $handler->setExceptionHandler('var_dump') ?: $this->exceptionHandler;
115 $handler->setExceptionHandler($h);
116 $handler = is_array($h) ? $h[0] : null;
117 }
118 if ($handler instanceof ExceptionHandler) {
119 $handler->setHandler($this->exceptionHandler);
120 if (null !== $this->fileLinkFormat) {
121 $handler->setFileLinkFormat($this->fileLinkFormat);
122 }
123 }
124 $this->exceptionHandler = null;
125 }
126 }
127
128 public static function getSubscribedEvents()
129 {
130 $events = array(KernelEvents::REQUEST => array('configure', 2048));
131
132 if (defined('Symfony\Component\Console\ConsoleEvents::COMMAND')) {
133 $events[ConsoleEvents::COMMAND] = array('configure', 2048);
134 }
135
136 return $events;
137 }
138 }
139