FeipAPI/Mirzaev/Feip/Error.php

92 lines
2.7 KiB
PHP
Raw Permalink Normal View History

2020-10-02 21:11:19 +07:00
<?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;
}
}