92 lines
2.7 KiB
PHP
92 lines
2.7 KiB
PHP
|
<?php
|
|||
|
|
|||
|
declare(strict_types=1);
|
|||
|
|
|||
|
namespace Mirzaev\Feip;
|
|||
|
|
|||
|
/**
|
|||
|
* Ошибка
|
|||
|
*
|
|||
|
* Сборщик ошибок
|
|||
|
*
|
|||
|
* @property string ERROR_100 Не установлен обязательный параметр
|
|||
|
* @property string ERROR_200 Неподходящее значение параметра
|
|||
|
* @property array $errors Собранные ошибки
|
|||
|
*
|
|||
|
* @method public function __construct(int $type, string $target = null, string $message = null) Создать ошибку
|
|||
|
* @method public static function get(int $number = null) Получить одну, либо все ошибки
|
|||
|
*
|
|||
|
* @package Mirzaev\Feip\Error
|
|||
|
* @author Арсен Мирзаев <red@hood.su>
|
|||
|
*
|
|||
|
* @todo Я бы вместо этого подключил библеотеку на PSR-7, да сделал там сбор и возврат всех ТИПОВ ошибок
|
|||
|
*/
|
|||
|
class Error
|
|||
|
{
|
|||
|
/**
|
|||
|
* Ошибка #100
|
|||
|
*
|
|||
|
* Не установлен обязательный параметр
|
|||
|
*
|
|||
|
* @var string
|
|||
|
*/
|
|||
|
protected const ERROR_100 = 'Не установлен обязательный параметр';
|
|||
|
|
|||
|
/**
|
|||
|
* Ошибка #200
|
|||
|
*
|
|||
|
* Неподходящее значение параметра
|
|||
|
*
|
|||
|
* @var string
|
|||
|
*/
|
|||
|
protected const ERROR_200 = 'Неподходящее значение параметра';
|
|||
|
|
|||
|
/**
|
|||
|
* Ошибки
|
|||
|
*
|
|||
|
* Собранные ошибки за время выполнения
|
|||
|
*
|
|||
|
* @var array
|
|||
|
*/
|
|||
|
protected static array $errors = [];
|
|||
|
|
|||
|
/**
|
|||
|
* Создать ошибку
|
|||
|
*
|
|||
|
* @param int $type Тип ошибки
|
|||
|
* @param string|null $target Причина ошибки
|
|||
|
* @param string|null $message Сообщение об ошибке
|
|||
|
*
|
|||
|
* @todo Я бы переименовал $type (Тип ошибки) в $code (Код ошибки), но уже поздно
|
|||
|
*
|
|||
|
* @return void
|
|||
|
*/
|
|||
|
public function __construct(int $type, string $target = null, string $message = null)
|
|||
|
{
|
|||
|
self::$errors[] = [
|
|||
|
'type' => $type,
|
|||
|
'target' => $target ?? 'request',
|
|||
|
'value' => $message ?? constant('self::ERROR_' . $type)
|
|||
|
];
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получить одну, либо все ошибки
|
|||
|
*
|
|||
|
* @param int|null $number Номер ошибки
|
|||
|
*
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public static function get(int $number = null): array
|
|||
|
{
|
|||
|
// Одна ошибка
|
|||
|
if (isset($number)) {
|
|||
|
// Если передан номер ошибки
|
|||
|
return self::$errors[$number];
|
|||
|
}
|
|||
|
|
|||
|
// Все ошибки
|
|||
|
return self::$errors;
|
|||
|
}
|
|||
|
}
|