SuperAPI AI 工具集

laravel-clean-architecture

设计与创作

查看项目

更新于 10-15 22:13

技能介绍

用途:在 Laravel 项目中实现领域驱动设计(DDD)与整洁架构,把业务用例逻辑从控制器和模型中抽离,形成可测试、可替换的分层结构。

主要能力与约定:

  1. 目录按业务域分组,例如 app/Domains/Order/{Actions,DTOs,Contracts}/,按 User、Order、Payment 等领域划分,而非按 Controllers、Models 类型划分;标准 Eloquent 模型仍放在 app/Models/。
  2. DTO:使用 readonly class(PHP 8.2+)或 readonly 属性(PHP 8.1+),带类型化构造属性,用于跨层传递数据,替代原始数组或 Eloquent 模型。
  3. 仓储模式:在 Contracts/ 定义 OrderRepository 接口,实现 EloquentOrderRepository,并在 AppServiceProvider 中通过 $this->app->bind(OrderRepository::class, EloquentOrderRepository::class) 绑定。
  4. Action 类:单一职责的用例逻辑,消费 DTO,控制器不直接写 Eloquent 查询。
  5. 层间流向:Controller → Action → Repository 接口 → Eloquent,DTO 在每次层转换时跨边界传递。

使用方式(新增领域功能的工作流):创建领域文件夹;定义带类型构造属性的 readonly DTO;在 Contracts/ 定义仓储接口;实现 Eloquent 仓储并在 AppServiceProvider 绑定;编写消费 DTO 的单一职责 Action;运行 php artisan tinker 解析接口以确认依赖注入生效。

反模式:控制器中写 Eloquent;跨层传原始数组;上帝服务;依赖具体实现而非接口。

适用场景:中大型 Laravel 项目、需要清晰领域边界与可替换持久层的团队。限制:资料未提供具体版本兼容范围、性能数据、收费信息与完整代码示例,需结合项目实际验证。