PHPackages                             andrey-tech/data-storage-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. andrey-tech/data-storage-php

ActiveLibrary[File &amp; Storage](/categories/file-storage)

andrey-tech/data-storage-php
============================

Простое хранилище данных в виде ключ-значение в JSON-файлах с разделяемой блокировкой на чтение и эксклюзивной блокировкой на запись

1.1.0(5y ago)316MITPHPPHP &gt;=7.0

Since Jul 30Pushed 5y ago1 watchersCompare

[ Source](https://github.com/andrey-tech/data-storage-php)[ Packagist](https://packagist.org/packages/andrey-tech/data-storage-php)[ Docs](https://github.com/andrey-tech/data-storage-php)[ RSS](/packages/andrey-tech-data-storage-php/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (2)DependenciesVersions (3)Used By (0)

Data Storage PHP
================

[](#data-storage-php)

Простое хранилище данных в виде ключ-значение в JSON-файлах с разделяемой блокировкой на чтение и эксклюзивной блокировкой на запись.

Содержание
----------

[](#содержание)

- [Требования](#%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
- [Установка](#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
- [Класс `FileStorage`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-filestorage)
- [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B)
- [Автор](#%D0%90%D0%B2%D1%82%D0%BE%D1%80)
- [Лицензия](#%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)

Требования
----------

[](#требования)

- PHP &gt;= 7.0.
- Трейт [`\App\Utils\JsonUtils`](https://github.com/andrey-tech/utils-php), содержащий методы для работы c данными в формате JSON.
- Произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/).

Установка
---------

[](#установка)

Установка через composer:

```
$ composer require andrey-tech/data-storage-php

```

или добавить

```
"andrey-tech/data-storage-php"

```

в секцию require файла composer.json.

Класс `FileStorage`
-------------------

[](#класс-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](./LICENSE).

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

2

Last Release

2114d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/de69f7116b4bbba0435826347eeea01c7c6d831ae5ca5325ccf0686e7ddb92b4?d=identicon)[andrey-tech](/maintainers/andrey-tech)

---

Top Contributors

[![andrey-tech](https://avatars.githubusercontent.com/u/51994444?v=4)](https://github.com/andrey-tech "andrey-tech (3 commits)")

---

Tags

datadata-storagefilesjsonphpphp7storagejsonfilesstorage

### Embed Badge

![Health badge](/badges/andrey-tech-data-storage-php/health.svg)

```
[![Health](https://phpackages.com/badges/andrey-tech-data-storage-php/health.svg)](https://phpackages.com/packages/andrey-tech-data-storage-php)
```

###  Alternatives

[league/flysystem

File storage abstraction for PHP

13.6k639.1M2.2k](/packages/league-flysystem)[league/flysystem-aws-s3-v3

AWS S3 filesystem adapter for Flysystem.

1.6k263.6M790](/packages/league-flysystem-aws-s3-v3)[league/flysystem-async-aws-s3

AsyncAws S3 filesystem adapter for Flysystem.

2610.5M31](/packages/league-flysystem-async-aws-s3)[nimbusoft/flysystem-openstack-swift

Flysystem adapter for OpenStack Swift

44774.4k6](/packages/nimbusoft-flysystem-openstack-swift)[sausin/laravel-ovh

OVH Object Storage driver for laravel

40153.5k](/packages/sausin-laravel-ovh)[djurovicigoor/lara-files

Lara-files is a package which will make it easier to work with files. Package has built-in support for DigitalOcean spaces and Amazon S3.

1196.5k](/packages/djurovicigoor-lara-files)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
