
新课程教你用设计模式和原则维护现有PHP代码库
来源标题:Building Maintainable PHP Applications: Patterns and Principles
一门名为《构建可维护的PHP应用:模式与原则》的新课程发布,面向已有Laravel、Symfony或原生PHP代码库的开发者。课程提供DTO、值对象、命名构造器、不可变对象等工具与模式,无需重构架构或说服团队重写即可直接应用。多数课程以代码为主,示例覆盖Laravel、Symfony和纯PHP。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
如果说《基础》讲的是如何思考,那么这门课讲的是如何把这种思考用到你现有的代码库中。它是一套工具、模式和习惯的集合,你可以直接在现有的 Laravel、Symfony 或原生 PHP 代码库中开始使用,而不必丢弃任何东西。它们都不要求你采用新架构,也不需要说服团队重建。
这些构建模块会在《架构》课程中再次出现,但它们本身也很有价值。大多课程以代码为主,示例使用 Laravel、Symfony 或纯 PHP,其中的思想适用于任何 PHP 代码库。
引言——工具,而非规则 课程 小对象,大影响用 DTO、值对象、命名构造器和不可变对象替代原始类型和松散数组,让对象自带验证、行为和含义。 原始类型偏执 课程 数据传输对象 课程 值对象 课程 命名构造器 课程 不可变对象 课程 良好对象设计的原则应用“告诉,不要问”、迪米特法则、组合优于继承、富模型、SOLID 和卫语句,让对象对自己的状态和规则保持诚实。 告诉,不要问 课程 迪米特法则 课程 组合与继承 课程 贫血领域模型与富领域模型 课程 用真实代码解释 SOLID 原则 课程 卫语句与防御式编程 课程 把东西连接起来把一个系统的各部分连接起来:注入依赖而不是定位依赖,有意识地选择工厂,按需使用仓库和 Active Record,并停止把不相关的代码都丢进一个包罗万象的 Service 类。 依赖注入与服务定位器模式 课程 工厂设计模式 课程 仓库模式 课程 Active Record 与 Data Mapper 课程 服务模式 课程 行为与变化在不修改可用代码的前提下添加和变化行为:使用装饰器、策略、规约、空对象和领域事件作为接缝,并了解为什么 Singleton 通常是错误的工具。 装饰器模式 课程 策略模式 课程 规约模式 课程 空对象模式 课程 领域事件 课程 单例模式 课程 命令与查询把改变状态的方法与回答问题的方法分开,为每个用例提供一个命令和一个处理器,为每个屏幕提供一个返回读取 DTO 的查询处理器,并了解何时独立的读写模型已经足够。 命令-查询分离(CQS) 课程 命令模式:命令与命令处理器 课程 查询与查询处理器 课程 CQRS:读写分离模型 课程 总线上的命令、查询与事件在调用方和处理器之间放一个调度器:命令总线把每个命令路由到它唯一的处理器,查询总线回答问题并缓存答案,事件总线把一个事件交给多个监听器。 命令总线 课程 查询总线 课程 事件总线 课程 持久化、流程与状态用工作单元把用例中的每次更改一起保存,用标识映射让每一行保持一个对象,通过管道运行有序步骤,把状态规则移入状态类,并通过构建器组装包含许多可选部分的对象。 工作单元与标识映射 课程 管道模式 课程 状态模式 课程 构建器模式 课程 失败与验证抛出具体的领域异常而不是通用异常,让框架异常远离领域代码,在抛出异常过于沉重时改用结果对象,并把输入验证和不变量验证放在各自该在的位置。 把异常处理作为设计 课程 领域异常与框架异常 课程 结果模式:抛出异常的替代方案 课程 输入验证与领域验证:各自该放在哪里 课程 测试作为一种纪律构建能捕获真实回归的测试套件:选择合适的测试替身,在值得的地方应用 TDD 和 BDD,用变异测试衡量质量,并在不改变行为的前提下重构。 测试金字塔:单元、集成与端到端测试 课程 测试替身——Mock、Stub、Fake 和 Spy 课程 测试驱动开发 课程 行为驱动开发 课程 变异测试 课程 重构作为一种纪律 课程 把它们组合起来用本课程中的模式重构一个遗留预订功能,选择哪些模式真正值得出现在代码中,其余的则留在工具箱里。 重构遗留代码:课程综合项目 课程 开始课程 你的进度,已保留。 免费账户会为每节完成的课程保留勾选标记,方便你从停下的地方继续。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。