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