Бета 1.1
This commit is contained in:
2025-06-28 18:15:18 +03:00
parent e9118609b6
commit f5420ce2c0
5 changed files with 424 additions and 43 deletions

View File

@@ -0,0 +1,67 @@
<?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;
}
}