andrey-tech / data-storage-php
Простое хранилище данных в виде ключ-значение в JSON-файлах с разделяемой блокировкой на чтение и эксклюзивной блокировкой на запись
1.1.0
2020-08-03 08:45 UTC
Requires
- php: >=7.0
- ext-json: *
This package is auto-updated.
Last update: 2024-10-29 06:00:06 UTC
README
Простое хранилище данных в виде ключ-значение в JSON-файлах с разделяемой блокировкой на чтение и эксклюзивной блокировкой на запись.
Содержание
Требования
- PHP >= 7.0.
- Трейт
\App\Utils\JsonUtils
, содержащий методы для работы c данными в формате JSON. - Произвольный автозагрузчик классов, реализующий стандарт PSR-4.
Установка
Установка через composer:
$ composer require andrey-tech/data-storage-php
или добавить
"andrey-tech/data-storage-php"
в секцию require файла composer.json.
Класс FileStorage
Работа с хранилищами производится с помощью класса \App\DataStorage\FileStorage
.
При возникновении ошибок выбрасывается исключение с объектом класса \App\DataStorage\FileStorageException
.
Класс \App\DataStorage\FileStorage
имеет следующие публичные методы:
__construct(string $storageName = 'storage', string $storageDir = 'storage/')
Конструктор класса-хранилища.$storageName
- имя хранилища. Должно удовлетворять регулярному выражению'/^[\w\.-]+$/i
;$storageDir
- каталог, в котором будут располагаться JSON-файлы хранилища.
set(array $set) :void
Устанавливает в хранилище значения по ключам.$set
- ассоциативный массив ключей и значений:[ 'key1' => 'value1', 'key2' => 'value2',... ]
.
get(array|string $keys)
Возвращает из хранилища значение по ключу или значения по ключам.$keys
- ключ или массив ключей.
delete(array|string $keys) :void
Удаляет из хранилища пару(ы) ключ-значение по ключу(ам).$keys
- ключ или массив ключей.
load() :array
Загружает и возвращает все данные из хранилища в виде массива.update(array $set = [], array $delete = []) :void
Обновляет и/или удаляет значения по ключам в хранилище.$set
- ассоциативный массив ключей и значений:[ 'key1' => 'value1', 'key2' => 'value2',... ]
;$delete
- массив удаляемых ключей.
hasKey(string $key) :bool
Проверяет наличие пары ключ-значение в хранилище.$key
- имя ключа.
getStorageFileName() :string
Возвращает абсолютное имя JSON-файла хранилища.
Примеры
use \App\DataStorage\FileStorage; use \App\DataStorage\FileStorageException; use \App\AppException; try { $storage = new FileStorage('storage-1'); $storage->set([ 'manager_id' => 2369305, 'numbers' => [ 4, 8, 15, 16, 23, 42 ], 'error_time' => null, 'user_ids' => [ 'alex' => 23, 'bob' => 2 ], 'months' => [ '0' => [ 1, 4 ], '1' => [ 1, 2, 5 ] ] ]); $storage->set([ 'group_id' => 94824 ]); var_dump($storage->hasKey('numbers')); print_r($storage->get('numbers')); print_r($storage->get([ 'manager_id', 'user_ids' ])); $storage->delete('group_id'); $storage->update( $set = [ 'error_time' => 1596124230 ], $delete = [ 'manager_id' ] ); print_r($storage->load()); } catch (FileStorageException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } catch (AppException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); }
Автор
© 2020 andrey-tech
Лицензия
Данный код распространяется на условиях лицензии MIT.