adachsoft / dynamic-table-json
JSON file-based implementation of adachsoft/dynamic-table-contract
v0.4.1
2026-04-24 13:43 UTC
Requires
- php: >=8.2
- adachsoft/dynamic-table-contract: ^0.5 || ^1.0
Requires (Dev)
- adachsoft/php-code-style: ^0.4
- friendsofphp/php-cs-fixer: ^3.95
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^13.1
- rector/rector: ^2.4
README
dynamic-table-json is a small PHP library that provides a JSON-based storage for dynamic table-like data. It implements the adachsoft/dynamic-table-contract package and is intended for use cases where you want to persist rows of data in JSON files without introducing a full database engine.
Features
- File-based JSON storage for tables and rows
- Separate repositories for tables and rows (
JsonTableRepository,JsonRowRepository) - Full support for
TableRepositoryInterfaceandRowRepositoryInterfacefromadachsoft/dynamic-table-contractv0.4:- Table CRUD:
create(NewTableDto),getAll(): TableCollection,update(),delete()withDuplicateTableException - Row CRUD:
add()withNewRowDto,getAll(),getById(),update(),delete()withRowNotFoundExceptionInterface
- Table CRUD:
- Row and table JSON format with explicit structure (
id,values, columns schema) - Pluggable serializers for rows and tables
- Clear separation between storage, repositories and serializers
- Dedicated exceptions for storage, decoding, missing tables/rows and duplicates (
TableNotFoundException,GenericRowNotFoundException,DuplicateTableException)
Requirements
- PHP 8.2 or higher
adachsoft/dynamic-table-contract^0.4 (installed automatically as a dependency)
Installation
Install the package via Composer:
composer require adachsoft/dynamic-table-json
Basic concepts
- Storage: low-level access to JSON files (
JsonFileStorageandJsonFileStorageInterface). - Repositories:
JsonTableRepository– full implementation ofTableRepositoryInterfacefor persisting table schemas (columns) usingTableDto/NewTableDto.JsonRowRepository– implementation ofRowRepositoryInterfacefor working with table rows (including single-row operations).
- Serializers:
TableSerializerconvertsTableDtoobjects to and from JSON-friendly arrays.RowSerializerconvertsRowDto/NewRowDtoobjects to and from the on-disk JSON format withidandvalueskeys.
- Exceptions: custom exceptions for decoding issues, storage problems, lookup errors and duplicates (
JsonStorageException,JsonDecodingException,TableNotFoundException,GenericRowNotFoundException,DuplicateTableException).
License
This library is released under the MIT license.