Files

35 lines
1.1 KiB
Markdown

---
paths:
- "**/*.php"
- "**/composer.json"
---
# PHP 设计模式
> 本文档在 [common/patterns.md](../common/patterns.md) 的基础上,补充了 PHP 相关的内容。
## 精炼控制器,明确服务
* 保持控制器专注于传输层:认证、验证、序列化、状态码。
* 将业务规则移至应用/领域服务中,这些服务无需 HTTP 引导即可轻松测试。
## DTO 与值对象
* 对于请求、命令和外部 API 负载,用 DTO 替代结构复杂的关联数组。
* 对于货币、标识符、日期范围和其他受约束的概念,使用值对象。
## 依赖注入
* 依赖于接口或精简的服务契约,而非框架全局变量。
* 通过构造函数传递协作者,这样服务就无需依赖服务定位器查找,易于测试。
## 边界
* 当模型层职责超出持久化时,应将 ORM 模型与领域决策隔离。
* 将第三方 SDK 封装在小型的适配器之后,使代码库的其余部分依赖于你的契约,而非它们的。
## 参考
参见技能:`api-design` 了解端点约定和响应格式指导。
参见技能:`laravel-patterns` 了解 Laravel 特定架构指导。