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