PHPackages                             romanfedorskij/table-registry - 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. romanfedorskij/table-registry

ActiveLibrary

romanfedorskij/table-registry
=============================

PHP-first table registry core for explicit column contracts, PostgreSQL query compilation, row projection and XLSX export.

v0.4.0(yesterday)06↑2400%MITPHPPHP ^8.1

Since Aug 16Pushed yesterdayCompare

[ Source](https://github.com/wolfcharaa/table-registry)[ Packagist](https://packagist.org/packages/romanfedorskij/table-registry)[ RSS](/packages/romanfedorskij-table-registry/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (3)Versions (5)Used By (0)

TableRegistry
=============

[](#tableregistry)

`TableRegistry` - PHP-библиотека для явного описания табличных read-моделей, сборки PostgreSQL-запросов, нормализации строк под frontend-контракт и выгрузки данных в XLSX.

Библиотека не зависит от конкретного web-фреймворка, DI-контейнера или HTTP-слоя. Она описывает только то, что backend должен знать о таблице: источник данных, колонки, фильтры, сортировки, поиск, пагинацию и подготовку строк.

Возможности
-----------

[](#возможности)

- описание таблицы через PHP-классы без YAML/JSON-конфигурации;
- обязательная primary key колонка;
- явные sortable/filterable/searchable правила на уровне колонок;
- сериализация definition в стабильный JSON-контракт для frontend;
- компиляция rows/count/export SQL для PostgreSQL;
- payload-only/action-only колонки для служебных значений строк без попадания в настройки отображения;
- export policy на уровне колонок для безопасного выбора XLSX-полей;
- runtime constraints через callback или invokable class;
- value object нормализация значений строк;
- label/hydration resolvers для человекочитаемого payload;
- flatten projected rows для export/print;
- XLSX export через OpenSpout.

Библиотека не управляет действиями пользователя, кнопками, layout таблицы, проверками доступа на уровне маршрута, CRUD-командами и HTTP-роутингом. Эти решения должны оставаться в приложении, которое использует библиотеку.

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

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

- PHP 8.1 или выше;
- `ext-json`;
- `ext-mbstring`;
- `psr/container`;
- `openspout/openspout` для XLSX export;
- `phpunit/phpunit` только для разработки и тестов.

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

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

```
composer require romanfedorskij/table-registry
```

Для локальной разработки:

```
composer install
composer test
```

Более подробные сценарии использования вынесены в [docs/examples](docs/examples):

- описание table definition;
- сборка PostgreSQL SQL;
- projection rows;
- runtime constraints;
- PSR-container invoker;
- XLSX export.

Быстрый Старт
-------------

[](#быстрый-старт)

```
