Обработчик ошибок позволяет вам приспосабливать то, в каком виде ваш код будет возвращать ошибки.

Приятная страница ошибок с кучей отладочной информации будет с вами на протяжении всего длительного пути разработки. И первый пакет для нашего приложения об этом позаботится.

Мне нравится  filp/whoops, поэтому я покажу как вам его поставить на свой проект. Если вы предпочитаете другой, спокойно ставьте свой. В том и прелесть программинга без фреймворка - у вас есть тотальный контроль над собственным проектом.

Альтернативой мог бы послужить PHP-Error.

Для установки нового пакета откройте composer.json и добавьте пакет в секцию require. После она должна выглядеть так:

"require": {
    "php": ">=7.0.0",
    "filp/whoops": "~2.1"
},

Теперь запустите в консоли composer update, и пакет установится.

Однако пока вы не сможете его использовать. PHP не в курсе, где найти файлы классов. Для этого вам понадобится автозагрузчик. Идеально, если это будет автозагрузчик PSR-4. Composer уже позаботился об этом, поэтому вам остается только добавить строку require __DIR__ . '/../vendor/autoload.php'; в файл Bootstrap.php

Важно: никогда не отображайте какие-либо ошибки в продакшене. Трассировка стека или даже простейшее сообщение об ошибке может помочь кому-либо получить доступ к вашей системе. Всегда показывайте пользователям заглушку-предупреждение, а для себя сохраняйте текст ошибки в логи, отправляйте на email или т.п. Таким образом, в продакшене только вы должны просматривать суть ошибок.

В режиме разработки это хоть и не важно, однако ж, вы хотите, чтобы страница с информацией об ошибке была приятной. Удобно иметь переключатель в коде для разных режимов. И пока нам нужен режим разработки - development.

После регистрации обработчика ошибок, бросим Исключение, дабы протестить, что все работает корректно. Ваш файл Bootstrap.php должен быть теперь похожим на такой:

<?php declare(strict_types = 1);

namespace Example;

require __DIR__ . '/../vendor/autoload.php';

error_reporting(E_ALL);

$environment = 'development';

/**
* Register the error handler
*/
$whoops = new \Whoops\Run;
if ($environment !== 'production') {
    $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
} else {
    $whoops->pushHandler(function($e){
        echo 'Todo: Дружественная заглушка и отправка email разработчику';
    });
}
$whoops->register();

throw new \Exception;

Вы должны лицезреть страницу ошибок с подсвеченной строчкой, где содержится исключение. Если не видите, вернитесь и отладьте код, пока он не станет работать должным образом. Сейчас как раз самое время для очередного коммита.

Источник

Наверх