定制 andy87/yii2-dnk-base 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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 — базовый builder ActiveDataProvider для 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-модели и новые записи, но не содержит generic update(...).
  • 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 我们能提供哪些服务?
定制开发 / 二次开发

基于 andy87/yii2-dnk-base 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 21
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 44
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-28