Компонент Debug
Компонент Debug
Компонент Debug предоставляет инструменты для облегчения отладки PHP-кода.
Установка
1
$ composer require symfony/debug
Также вы можете клонировать репозиторий https://github.com/symfony/debug.
Note
Если вы устанавливаете этот компонент вне приложения Symfony, вам нужно
подключить файл vendor/autoload.php
в вашем коде для включения механизма
автозагрузки классов, предоставляемых Composer. Детальнее читайте в
этой статье.
Применение
Компонент Debug предоставляет несколько инструментов, чтобы помочь вам с отладкой PHP-кода. Их подключение не могло бы быть проще:
1 2 3
use Symfony\Component\Debug\Debug;
Debug::enable();
Метод enable() регистрирует обработчик ошибок, обработчик исключений и специальный загрузчик класса.
Прочтите следующие разделы, чтобы узнать больше о разных доступных инструментах.
Caution
Никогда не стоит включать инструменты отладки в окружении производства, так как они могут опубликовать чувствительную информацию пользователям.
Включение обработчика ошибок
Класс ErrorHandler ловит PHP-ошибки и преобразует их в исключения (класса ErrorException или FatalErrorException для фатальной PHP-ошибки):
1 2 3
use Symfony\Component\Debug\ErrorHandler;
ErrorHandler::register();
Включение обработчика исключений
Класс ExceptionHandler ловит непойманные PHP-исключение и преобразуетих в красивые PHP-ответы. В режиме отладки полезно заменять вывод PHP/XDebug по умолчанию на что-то более полезное:
1 2 3
use Symfony\Component\Debug\ExceptionHandler;
ExceptionHandler::register();
Note
Если доступен компонент HttpFoundation, обработчик использует объект Symfony Response; если нет - используется резервный обычный PHP-ответ.
Отладка загрузчика класса
Класс DebugClassLoader пробует вызвать
более полезные исключения, когда класс не найден зарегистрированными
автозагрузчиками. Все автозагрузчики, которые реализуют метод findFile()
,
заменяются оболочкой DebugClassLoader
.
Использование DebugClassLoader
настолько простое, что заключается
в вызове его статичного метода enable():
1 2 3
use Symfony\Component\Debug\DebugClassLoader;
DebugClassLoader::enable();