Работа с ошибками

Класс для работы с ошибками. И всем связаным с обработкой ошибок

 

Основа класса - процедуры хранения ошибок и отображения их пользователю. Полученые в результате обработки сообщения хранятся в сессии пользователя до первой возможности их отобразить.

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

c\error::add($text,$type=self::ERROR,$redirect=false,$header='');
c\error::addError($text,$redirect=false,$header='');
c\error::addWarning($text,$redirect=false,$header='');
c\error::addSuccess($text,$redirect=false,$header='');

Добавляет сообщение в стек сообщений.

$type может принимать одно из значений c\error::ERROR,c\error::WARNING,c\error::SUCCESS. Все ошибки группируются по типам.

$redirect - Наличие редиректа задействует метод переадресации в одном обращении.

$header - Также относится к методу редиректа, который будет описан ниже

c\error::count($type=c\error::ERROR);
c\error::size($type=c\error::ERROR);

Возвращает число ошибок определенного типа в буфере ошибок.

Подразумевается использование данного метода для определения наличия ошибок, с возможностью предотвращения выполнения итоговых данных в транзакции случае наличия ошибок

c\error::errors();
c\error::warnings();
c\error::success();

Возвращает массив из стека ошибок, ошибок типа Warning и успешных операций, при этом очищая его

c\error::header($code);

Добавляет заголовок с указаным кодом ошибки. Поддерживает 404, 500 и 301 коды

c\error::redirect($url='',$header='');

Редиректит пользователя на указаный URL. Через заголовок и Javascript. По завершению функции - скрипт завершается. Подразумевается, что redirect перебрасывает пользователя и логически завершает выполнение скрипта.

Если URL не будет указан - страница редиректит сама на себя. Следует быть осторожным с зацикливанием и использовать редирект без URL только в POST запросах.

Параметр $header позволяет указать одновременно заголовок ответа по функциналу, описаному выше

В режиме отладки скрипт вместо редиректа возвращает страницу со ссылкой на страницу редиректа, чтобы была возможность посмотреть происходящее в консоли

c\error::log($filename,$string);

Добавляет в файл $filename строку $string.

Если файл не сущестствует - создает его.

При записи - происходит блокировка файла от одновременного использования, таким образом - файл не будет стерт при одновременном обращении из нескольких процессоров

Цепочечный вызов

Для вашего удобства - вы можете вызывать методы класса через цепочку, чтобы не совмещать действия, делая код более лаконичным

c\error::addError('Ошибка при сохранении')
->log('logs/error.log','Ошибка при сохранении')
->header(500)
->redirect('result-page');

Свой обработчик ошибок

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

c\render::showAlerts('path-to-file');

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

<?=include c\mvc::viewPage(false)?>

Либо вы можете самостоятельно заранее забрать все ошибки из буфера и самостоятельно их отрендерить

$errorBuffer=c\error::errors(); // перемещает буфер ошибок в переменную
...
if ($errorBuffer){
foreach ($errorBuffer as $error){
echo $error;
}
}

Создано при помощи сервиса Core CMS