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