classes/JsonReWriter.md
Класс JsonReWriter
Пространство имён: goodboyalex\php_components_pack\classes
Полное имя класса: goodboyalex\php_components_pack\classes\JsonReWriter
Тип: финальный класс
Версия: 1.0
Доступно с: 1.1.0
Описание
Класс предоставляет функционал для работы с JSON-данными, включая:
- Чтение и запись значений
- Работу с файлами JSON
- Управление структурой данных
- Сериализацию объектов
Автор
- Имя: Александр Бабаев
- Email: contact_with_us@babaev-an.ru
Метаданные
- PSR‑4:
goodboyalex\php_components_pack - Модификатор класса:
final - Используемые трейты:
JsonReWriterDeleteTraitJsonReWriterKeyTraitJsonReWriterLoadSaveTraitJsonReWriterReadTraitJsonReWriterWriteTrait
Свойства
jsonString
- Тип:
string - Описание: строка JSON для работы
Методы
Конструкторы и деструкторы
public function __construct()
public function __destruct()
Чтение данных
public function read(string $key, mixed $default = null): mixed
Описание: базовое чтение значения по ключу
public function readInt(string $key, int $default = 0): int
public function readFloat(string $key, float $default = 0.0): float
public function readBool(string $key, bool $default = false): bool
public function readArray(string $key, array $default = []): array
public function readString(string $key, string $default = ""): string
public function readObject(string $key, object $default): object
public function readSerializable(string $key, string $serializableClassName): ISerializable
Запись данных
public function write(string $key, mixed $value): void
public function writeObject(string $key, object $value): void
public function writeSerializable(string $key, ISerializable $serializableValue): void
public function writeArray(string $key, array $array): void
Работа с файлами
public function saveToFile(string $fileName): bool
public function loadFromFile(string $fileName): bool
Управление структурой
public function isKeyExists(string $key): bool
public function getKeys(string $parentKey = "", bool $includeChildren = true): array
public function clear(): void
public function deleteKey(string $key): bool
Обработка ошибок
Класс выбрасывает исключение JsonException в следующих случаях:
- Неверный формат JSON
- Ошибка при записи данных
- Некорректный ключ
- Проблемы с сериализацией
Примеры использования
Базовый пример
$json = new JsonReWriter();
// Загрузка из файла
$json->loadFromFile('data.json');
// Чтение данных
$value = $json->read('key.subkey', 'default');
// Запись данных
$json->write('new.key', 'value');
// Сохранение
$json->saveToFile('data.json');
Работа с объектами
// Запись объекта
$json->writeObject('object.key', new MyClass());
// Чтение объекта
$obj = $json->readObject('object.key', new MyClass());
Особенности использования
Особенности использования (продолжение)
Формирование ключей JSON
Правила формирования ключей:
- Ключи разделяются символом
/ - Пример структуры:
parent/child/subchild - Поддерживается многоуровневая вложенность
Пример JSON-структуры:
{
"test": {
"subtest": {
"AAA": "123",
"BBB": 1.23
}
}
}
Для доступа к значению BBB используется ключ test/subtest/BBB
Работа с типами данных
Поддерживаемые типы данных:
- Строки (
ReadString,Write) - Целые числа (
ReadInt,Write) - Вещественные числа (
ReadFloat,Write) - Булевы значения (
ReadBool,Write) - Массивы (
ReadArray,WriteArray) - Объекты (
ReadObject,WriteObject) - Сериализуемые объекты (
ReadSerializable,WriteSerializable)
Обработка ошибок
Возможные ошибки:
- Неверный формат JSON
- Отсутствие ключа
- Некорректный тип данных
- Проблемы с доступом к файлу
Коды ошибок:
Unknown— неизвестная ошибкаStateMismatch— неверный JSONSyntax— синтаксическая ошибкаKeyIsNotArray— ключ не является массивомNotISerializable— класс не реализует ISerializable
Рекомендации по использованию
-
Загрузка данных:
$json = new JsonReWriter(); $success = $json->loadFromFile('data.json'); -
Сохранение данных:
$json->saveToFile('output.json'); -
Чтение значений:
$value = $json->read('key/subkey', 'default'); $number = $json->readInt('numeric/key', 0); -
Запись значений:
$json->write('new/key', 'value'); $json->writeObject('object/key', new MyClass());
Типичные сценарии
-
Конфигурация приложения:
// Загрузка конфигурации $config = new JsonReWriter(); $config->loadFromFile('config.json'); // Получение параметров $dbHost = $config->readString('database/host'); -
Кэширование данных:
// Сохранение кэша $cache = new JsonReWriter(); $cache->write('data/key', $data); $cache->saveToFile('cache.json');
Производительность
-
Оптимизация:
- Минимизируйте количество операций чтения/записи
- Используйте пакетную обработку данных
- Кэшируйте часто используемые значения
-
Ограничения:
- Максимальный размер JSON-файла зависит от доступной памяти
- Глубина вложенности ограничена стеком вызовов
Безопасность
-
Валидация данных:
- Проверяйте типы данных перед записью
- Используйте значения по умолчанию
- Обрабатывайте исключения
-
Защита файлов:
- Настройте права доступа
- Проверяйте целостность данных
- Используйте резервное копирование