108 lines
2.9 KiB
PHP
108 lines
2.9 KiB
PHP
<?php
|
||
|
||
namespace goodboyalex\php_components_pack\enums;
|
||
|
||
use goodboyalex\php_components_pack\traits\EnumExtensionsTrait;
|
||
|
||
/**
|
||
* Перечисление известных ошибок при работе с JSON файлами.
|
||
*
|
||
* @author Александр Бабаев
|
||
* @package php_components_pack
|
||
* @version 1.0
|
||
* @since 1.1.0
|
||
*/
|
||
enum JsonErrorCode: int
|
||
{
|
||
// Подключаю расширение для Enum
|
||
use EnumExtensionsTrait;
|
||
|
||
/**
|
||
* Неизвестная ошибка.
|
||
*/
|
||
case Unknown = -1;
|
||
|
||
/**
|
||
* Ошибок нет.
|
||
*/
|
||
case None = 0;
|
||
|
||
/**
|
||
* Достигнута максимальная глубина стека.
|
||
*/
|
||
case Depth = 1;
|
||
|
||
/**
|
||
* Неверный или некорректный JSON.
|
||
*/
|
||
case StateMismatch = 2;
|
||
|
||
/**
|
||
* Ошибка управляющего символа, возможно, неверная кодировка.
|
||
*/
|
||
case CTRLChar = 3;
|
||
|
||
/**
|
||
* Синтаксическая ошибка.
|
||
*/
|
||
case Syntax = 4;
|
||
|
||
/**
|
||
* Некорректные для кодировки UTF-8 символы, возможно, неверная кодировка.
|
||
*/
|
||
case UTF8 = 5;
|
||
|
||
/**
|
||
* Одна или несколько зацикленных ссылок в кодируемом значении.
|
||
*/
|
||
case Recursion = 6;
|
||
|
||
/**
|
||
* Одно или несколько значений NAN или INF в кодируемом значении.
|
||
*/
|
||
case InfOrNan = 7;
|
||
|
||
/**
|
||
* Передали значение с неподдерживаемым типом.
|
||
*/
|
||
case UnsupportedType = 8;
|
||
|
||
/**
|
||
* Имя свойства не может быть закодировано.
|
||
*/
|
||
case InvalidPropertyName = 9;
|
||
|
||
/**
|
||
* Некорректный для кодировки UTF-16 символ, возможно, некорректно закодирован.
|
||
*/
|
||
case UTF16 = 10;
|
||
|
||
/**
|
||
* Ключ не содержит вложений, хотя от него требуется обратное.
|
||
*/
|
||
case KeyIsNotArray = 11;
|
||
|
||
/**
|
||
* Класс не реализует интерфейс ISerializable.
|
||
*/
|
||
case NotISerializable = 12;
|
||
|
||
/**
|
||
* Получает код ошибки из последней JSON ошибки.
|
||
*
|
||
* @return JsonErrorCode Код ошибки.
|
||
*/
|
||
public static function FromLastError (): JsonErrorCode
|
||
{
|
||
// Получаю код ошибки
|
||
$error = json_last_error();
|
||
|
||
// Проверяю, что код ошибки в диапазоне [0; 10]
|
||
if ($error < 0 || $error > 10)
|
||
// - верну неизвестную ошибку, если код не в диапазоне
|
||
return self::Unknown;
|
||
|
||
// Перевожу код в Enum
|
||
return self::FromInt($error);
|
||
}
|
||
} |