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
  • Используемые трейты:
    • JsonReWriterDeleteTrait
    • JsonReWriterKeyTrait
    • JsonReWriterLoadSaveTrait
    • JsonReWriterReadTrait
    • JsonReWriterWriteTrait

Свойства

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 — неверный JSON
  • Syntax — синтаксическая ошибка
  • KeyIsNotArray — ключ не является массивом
  • NotISerializable — класс не реализует ISerializable

Рекомендации по использованию

  1. Загрузка данных:

    $json = new JsonReWriter();
    $success = $json->loadFromFile('data.json');
    
  2. Сохранение данных:

    $json->saveToFile('output.json');
    
  3. Чтение значений:

    $value = $json->read('key/subkey', 'default');
    $number = $json->readInt('numeric/key', 0);
    
  4. Запись значений:

    $json->write('new/key', 'value');
    $json->writeObject('object/key', new MyClass());
    

Типичные сценарии

  1. Конфигурация приложения:

    // Загрузка конфигурации
    $config = new JsonReWriter();
    $config->loadFromFile('config.json');
    
    // Получение параметров
    $dbHost = $config->readString('database/host');
    
  2. Кэширование данных:

    // Сохранение кэша
    $cache = new JsonReWriter();
    $cache->write('data/key', $data);
    $cache->saveToFile('cache.json');
    

Производительность

  • Оптимизация:

    • Минимизируйте количество операций чтения/записи
    • Используйте пакетную обработку данных
    • Кэшируйте часто используемые значения
  • Ограничения:

    • Максимальный размер JSON-файла зависит от доступной памяти
    • Глубина вложенности ограничена стеком вызовов

Безопасность

  • Валидация данных:

    • Проверяйте типы данных перед записью
    • Используйте значения по умолчанию
    • Обрабатывайте исключения
  • Защита файлов:

    • Настройте права доступа
    • Проверяйте целостность данных
    • Используйте резервное копирование

На главную | Содержание