Download the PHP package besnovatyj/yii2-nested-sets without Composer
On this page you can find all versions of the php package besnovatyj/yii2-nested-sets. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download besnovatyj/yii2-nested-sets
More information about besnovatyj/yii2-nested-sets
Files in besnovatyj/yii2-nested-sets
Package yii2-nested-sets
Short Description Nested Sets ядро для Yii2: Service/Repository/ColumnMap без привязки к конкретному модулю. Одна из реализаций дерева для besnovatyj/yii2-cms-tree-manager.
License MIT
Informations about the package yii2-nested-sets
besnovatyj/yii2-nested-sets
Nested Sets ядро для Yii2: операции над деревом без behavior-методов на AR-моделях
и без привязки к конкретному модулю. Multi-tree (tree-колонка), глубина (depth),
опциональная сортировка корней отдельной колонкой (sort_order).
Выделено из besnovatyj/yii2-cms-tree-manager (фаза 3 плана разделения — TODO.MD
того пакета). Tree-manager — фасад работы с деревом; этот пакет — одна из реализаций
(абстракция «других подходов» — materialized path и т.п. — появится отдельной фазой,
когда возникнет вторая реализация).
Состав
| Класс | Роль |
|---|---|
NestedSetsService |
Высокоуровневые операции: create (root/prepend/append/before/after), move (включая makeRoot и сортировку корней moveRootBefore/After/ToFirst/ToLast/ToPosition, swapRoots, reindexRoots), delete (deleteWithChildren / deletePromotingChildren / deleteLeaf). Все операции — в транзакции. |
NestedSetsRepository |
Низкоуровневая работа с БД: выборки (roots/parents/descendants/children/leaves/prev/next), предикаты (isRoot/isLeaf/isChildOf), populateTree, сдвиги lft/rgt (shift), вставка/перемещение/удаление на уровне запросов. |
NestedSetsColumnMap |
Карта структурных колонок (lft/rgt/depth/tree/sort) — имена не хардкодятся; по ней же определяется, какие атрибуты модели «структурные», а какие — пользовательские. |
NestedSetsException |
Доменное исключение (нарушение инвариантов дерева: второй корень в single-tree, вставка before/after корня, перемещение в собственного потомка и т.п.). В фасаде маппится на HTTP 422. |
Использование
Требования к таблице: lft/rgt/depth (имена настраиваются), при multi-tree —
колонка дерева, при сортируемых корнях — колонка сортировки у корней.
Контракты
- Доменные ошибки — только
NestedSetsException(extendsRuntimeException): ловите его на границе (см.TreeController::execute()фасада — 422 наружу). - Операции сервиса транзакционны; репозиторий транзакций не открывает.
- Пакет зависит только от
yiisoft/yii2(yii\db\*).
Связанные пакеты
besnovatyj/yii2-cms-tree-manager— Yii2-фасад: TreeManager/TreeDataSource, PHP TreeWidget, generic TreeController (использует этот пакет).@besnovatyj/tree-widget-core(npm) — TS-виджет дерева, клиентская сторона.
License
MIT — см. LICENSE. Автор: Besnovatyj.