Перейти к содержимому

Storage

В библиотеке реализована поддержка FSM (Finite State Machine) для создания диалогов. Для работы с состояниями используются классы хранилищ.

FileStorage

Стандартная реализация хранилища на файлах (JSON). Использует асинхронные методы для работы с файловой системой, не блокируя поток выполнения.

Создание экземпляра

php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use ZenithGram\ZenithGram\Storage\FileStorage;

// По умолчанию создает папку 'storage/sessions' в корне проекта
$storage = new FileStorage();

// Можно указать свой путь
$storage = new FileStorage(__DIR__ . '/my_sessions');

RedisStorage

Реализация хранилища на базе Redis. Обеспечивает высокую скорость работы и идеально подходит для высоконагруженных проектов.

Вот таблица с параметрами конструктора, оформленная в запрошенном стиле:

Параметры конструктора

#НазваниеТипОписание
1hoststringХост сервера Redis.
По умолчанию: '127.0.0.1'
2portintПорт сервера.
По умолчанию: 6379
3prefixstringПрефикс для ключей (во избежание коллизий).
По умолчанию: 'zg_fsm:'
4dbIndexintНомер базы данных Redis.
По умолчанию: 0
5authstring|nullПароль для авторизации, если требуется.
По умолчанию: null

Создание экземпляра

php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use ZenithGram\ZenithGram\Storage\RedisStorage;

// 1. Подключение с настройками по умолчанию
$storage = new RedisStorage();

// 2. Указание кастомных настроек (именованные аргументы)
$storage = new RedisStorage(
    host: '192.168.1.10',
    port: 6379,
    prefix: 'my_bot_fsm:',
    dbIndex: 1,
    auth: 'secret_password'
);

StorageInterface

Интерфейс, который должны реализовать все хранилища. Вы можете написать свою реализацию для MySQL, Memcached и т.д.

Методы интерфейса

  • getState(int|string $user_id): ?string — Получить текущее состояние.
  • setState(int|string $user_id, string $state): void — Установить состояние.
  • clearState(int|string $user_id): void — Очистить состояние.
  • getSessionData(int|string $user_id): array — Получить данные сессии.
  • setSessionData(int|string $user_id, array $data): void — Сохранить данные.
  • clearSessionData(int|string $user_id): void — Очистить данные.

Опубликовано под лицензией MIT.