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-08-29 05:31:04 UTC
README
简单的键值存储,以JSON文件形式存储,支持读锁和写锁。
内容
要求
- PHP >= 7.0.
- 特性
\App\Utils\JsonUtils
,包含处理JSON数据的方法。 - 任意自动加载器,实现PSR-4标准。
安装
通过composer安装
$ composer require andrey-tech/data-storage-php
或添加以下内容到composer.json文件的require部分:
"andrey-tech/data-storage-php"
在文件composer.json的require部分添加以下内容:
类 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许可证分发。