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