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;
|
||
}
|
||
}
|