andy87/yii2-dnk-base
Composer 安装命令:
composer require andy87/yii2-dnk-base
包简介
Base classes for Yii2 DNK flow architecture.
README 文档
README
Базовые классы для Yii2-проектов, следующих DNK flow:
Controller -> Handler -> Service -> (Repository | Producer | Killer)
Установка
Основной способ установки — через Packagist:
composer require andy87/yii2-dnk-base:^0.1
Для установки текущей ветки разработки:
composer require andy87/yii2-dnk-base:dev-master
Базовые классы
andy87\yii2dnk\domain\BaseDomain— реестр домена и маппинг действий.andy87\yii2dnk\controllers\handlers\BaseWebControllerиBaseConsoleController— создают payload и handler через реестр домена.andy87\yii2dnk\domain\BaseHandler— выполняет payload, создаёт привязанную view-model и диспетчеризирует use case вprovider().andy87\yii2dnk\domain\BaseService— создаёт объекты repository, producer, killer и data provider через реестр домена (все getter-ы кэшируют экземпляр).andy87\yii2dnk\domain\BaseRepository— помощники чтения и запросов:findById(),findOrFail(),exists(),count(),queryForGrid().andy87\yii2dnk\domain\BaseProducer— помощники создания runtime-моделей, новых ActiveRecord и search model.andy87\yii2dnk\domain\BaseKiller— помощники жёсткого и опционального мягкого удаления.andy87\yii2dnk\BasePayload— входные данные действия.andy87\yii2dnk\BaseModel— базовая ActiveRecord-модель с константамиATTR_*и дефолтнымиattributeLabels().andy87\yii2dnk\viewModels\BaseViewModel— выходные данные действия.andy87\yii2dnk\viewModels\BaseResource— базовый resource для API/REST-ответов.andy87\yii2dnk\viewModels\BaseTemplateResource— базовый resource для web-view сTEMPLATE.andy87\yii2dnk\viewModels\crud\BaseIndexResource,BaseFormResource,BaseCreateResource,BaseUpdateResource,BaseViewResource— готовые CRUD resources для Gii-like views.andy87\yii2dnk\DomainAwareTrait— trait для автоматического определения класса домена по имени класса.andy87\yii2dnk\ModelClassTrait— trait для получения класса ActiveRecord-модели из реестра домена.andy87\yii2dnk\controllers\handlers\ControllerDomainTrait— общие методы getHandler()/getPayload() для web/console контроллеров.andy87\yii2dnk\domain\BaseActiveDataProvider— базовый builderActiveDataProviderдля list/index сценариев.andy87\yii2dnk\domain\BaseQueryStorage— базовый класс хранилища нативных SQL-запросов.andy87\yii2dnk\interfaces\SearchModelInterface— маркерный интерфейс для search-моделей.andy87\yii2dnk\exceptions\DnkException,andy87\yii2dnk\exceptions\ValidationException,andy87\yii2dnk\exceptions\NotFoundException,andy87\yii2dnk\exceptions\ForbiddenException— базовые доменные исключения.DnkExceptionименован так, чтобы избежать конфликта с PHP SPL\DomainException.
Domain registry
Основной registry-flow задаётся через instance-based BaseDomain с protected typed properties:
$model,$handler,$service,$repository,$producer,$killer;- optional
$searchModel,$dataProvider,$queryStorage; - mappings
$payloads,$viewModels; - config overrides
$definitions.
Static methods classes(), definition(), create(), payloadClass(), createPayload(), createViewModel() и связанные lookup methods остаются BC facade и делегируют в static::instance().
Legacy protected const CLASSES, PAYLOADS, VIEW_MODELS остаются только fallback для старого кода. Новый scaffold должен использовать protected typed properties, а не static/const registry.
protected const DOMAIN в Handler, Service, Repository, Producer, Killer, DataProvider, QueryStorage и controller-классах — это только pointer на Domain-класс, не Domain registry и не возврат к static/const registry.
$definitions предназначен для infrastructure config overrides. Top-level $definitions[$key]['class'] запрещён: class registry-объекта берётся из protected property. Вложенный Yii definition внутри значения вроде queryStorage может содержать class.
Ограничения
BaseProducerсоздает runtime-модели, search-модели и новые записи, но не содержит genericupdate(...).BaseActiveDataProvider::search()является abstract contract: конкретный доменный DataProvider реализует Gii-like фильтры.BaseWebController::display(...)покрывает простой HTML/JSON ответ и HTTP status code для JSON. Для redirect, file response и API envelope лучше добавить собственный метод в прикладном controller.runTransactional(...)открывает одну Yii DB transaction. Nested transactions, несколько БД и after-commit hooks не реализованы.
Документация
Полная документация по архитектуре, flow, правилам генерации и шаблонам:
- SKILL/SKILL.md — canonical source правил DNK flow, ответственности слоёв, антипаттернов и scaffold-шаблонов.
- SKILL/reference.md — краткий справочник, ссылается на SKILL/SKILL.md.
- SKILL/CHECKLIST.md — чеклист проверок при работе с DNK.
AI Skill
Пакет поставляется как runtime-библиотека и как AI skill. После установки через Composer skill-файлы доступны в:
vendor/andy87/yii2-dnk-base/SKILL/
Основной файл skill-а:
vendor/andy87/yii2-dnk-base/SKILL/SKILL.md
Проверки
composer check
andy87/yii2-dnk-base 适用场景与选型建议
andy87/yii2-dnk-base 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 21 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 04 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「repository」 「handler」 「domain」 「yii2」 「dnk」 「ai-skill」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 andy87/yii2-dnk-base 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 andy87/yii2-dnk-base 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 andy87/yii2-dnk-base 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Lazy loading for middleware and request handlers
repository php library
Set Links with a specific language parameter
Bootstraps errors and handles them via reporters and renderers
Build a domain-oriented application on Laravel Framework
Laravel 5 - Repositories to the database layer
统计信息
- 总下载量: 21
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 44
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-28