Компонент Debug

Дата оновлення перекладу 2023-05-26

Компонент Debug

Компонент Debug надає інструменти для полегшення налагодження PHP-коду.

Установка

1
$ composer require 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();