Компонент Debug

Компонент Debug предоставляет инструменты для облегчения отладки PHP-кода.

Установка

1
$ composer require symfony/debug

Также вы можете клонировать репозиторий https://github.com/symfony/debug.

Note

If you install this component outside of a Symfony application, you must require the vendor/autoload.php file in your code to enable the class autoloading mechanism provided by Composer. Read this article for more details.

Применение

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

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.