67 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | ||
| 
 | ||
| namespace goodboyalex\php_components_pack\exceptions;
 | ||
| 
 | ||
| use Exception;
 | ||
| use goodboyalex\php_components_pack\enums\JsonErrorCode;
 | ||
| 
 | ||
| /**
 | ||
|  * Ошибка работы с JSON.
 | ||
|  *
 | ||
|  * @author Александр Бабаев
 | ||
|  * @package php_components_pack
 | ||
|  * @version 1.0
 | ||
|  * @since 1.1.0
 | ||
|  */
 | ||
| final class JsonException extends Exception
 | ||
| {
 | ||
|     /**
 | ||
|      * @var string|null $JsonString Строка JSON.
 | ||
|      */
 | ||
|     public ?string $JsonString;
 | ||
| 
 | ||
|     /**
 | ||
|      * @var JsonErrorCode $ErrorCode Код ошибки JSON.
 | ||
|      */
 | ||
|     public JsonErrorCode $ErrorCode;
 | ||
| 
 | ||
|     /**
 | ||
|      * @link https://www.php.net/manual/ru/function.json-last-error-msg.php
 | ||
|      * @var string|null $ErrorMessage Сообщение об ошибке JSON.
 | ||
|      *
 | ||
|      * Внимание! В отличие от функции json_last_error_msg(), данная переменная при отсутствии ошибок выводит null, а не
 | ||
|      *     "No error".
 | ||
|      */
 | ||
|     public ?string $ErrorMessage;
 | ||
| 
 | ||
|     /**
 | ||
|      * Конструктор.
 | ||
|      *
 | ||
|      * @param string|null $json Строка JSON.
 | ||
|      * @param JsonErrorCode $errorCode Код ошибки JSON.
 | ||
|      * @param string|null $errorMessage Сообщение об ошибке JSON.
 | ||
|      */
 | ||
|     public function __construct (?string $json = null, JsonErrorCode $errorCode = JsonErrorCode::Unknown,
 | ||
|         ?string $errorMessage = null)
 | ||
|     {
 | ||
|         // Если код ошибки JSON равен 0
 | ||
|         if ($errorMessage === "No error")
 | ||
|             // - то присваиваем ему null для совместимости
 | ||
|             $errorMessage = null;
 | ||
| 
 | ||
|         // Сохраняем сообщение об ошибке
 | ||
|         $this->ErrorMessage = $errorMessage;
 | ||
| 
 | ||
|         // Если сообщение пусто, то присваиваем ему "" для совместимости
 | ||
|         $errorMessage = $errorMessage ?? "";
 | ||
| 
 | ||
|         // Запускаем базовый конструктор
 | ||
|         parent::__construct($errorMessage);
 | ||
| 
 | ||
|         // Присваиваем имя файла
 | ||
|         $this->JsonString = $json;
 | ||
| 
 | ||
|         // Присваиваем код ошибки
 | ||
|         $this->ErrorCode = $errorCode;
 | ||
|     }
 | ||
| } |