FeipAPI/Mirzaev/Feip/Error.php

92 lines
2.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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