Компонент 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();