PHP 接口的多态性 PHP 标准建议 (PSR)
如前所述,PHP 有许多开源库和框架。每个开发人员在编写代码时都有自己的偏好,每个框架或库都有自己的标准或做事方式。对于 PHP 开发人员来说,这可能会成为一个问题,因为我们往往会使用大量不同的库和框架。
举例来说,从一个框架过渡到另一个框架,但最终却使用了不同类型的服务容器,这可不好玩,因为这将要求您改变组织应用程序依赖关系的方式,因此引入了 PSR-11。服务容器是管理对象实例化(包括其依赖关系)的应用程序—在实施依赖注入(Dependency Injection 或 DI)时非常方便,第 8 章 "使用 SOLID 原则进行 TDD" 将对此进行讨论。这就是为什么遵循某些特定指南或标准很重要(尽管不是必需)的例子之一,也是 PSR 的用武之地。
什么是 PSR?
PHP 框架互操作性小组 (PHP-FIG) 推荐使用 PSR。他们是一群非常友善的开发人员,他们帮助我们使 PHP 编码生活更有条理。您可以在 https://www.php-fig.org/ 找到有关 PHP-FIG 的更多信息。
以下是目前接受的 PSR:
-
PSR-1:基本编码标准
-
PSR-3:
Logger
接口 -
PSR-4:自动加载标准
-
PSR-6:
Caching
接口 -
PSR-7:
HTTP
消息接口 -
PSR-11:
Container
接口 -
PSR-12:扩展编码风格指南(已弃用
PSR-2
) -
PSR-13:超媒体链接
-
PSR-14:事件分发器
-
PSR-15:
HTTP
处理程序 -
PSR-16:简单缓存
-
PSR-17:
HTTP
工厂 -
PSR-18:
HTTP
客户端
您可以在 https://www.php-fig.org/psr/ 上找到所有目前已被接受的 PSR。起初,最需要熟悉的 PSR 是 PSR-1
、PSR-12
和 PSR-4
。这有助于我们以更一致的风格编写代码,尤其是从一个框架过渡到另一个框架时。我曾经有一个 "最喜欢的" PHP MVC 框架,以为我会一直使用这个框架直到老去—但和往常一样,我错了。最后,我使用了太多不同的框架,以至于我不再关心我使用的是哪个框架。现在,我对每项具体工作都情有独钟。
PSR 只是 "建议"。但如果你真的想写 PHP 并提高自己代码的质量,我强烈建议你遵循它们。很多人都经历过不遵循标准的痛苦。我曾经编写了自己的依赖注入容器,结果却让我们团队的其他开发人员不知道如何使用它。我只是重新发明了轮子,用了一种糟糕的方式。我多么希望有一个标准可以遵循!对了,现在有 PSR-11 了。
|
总结
在本章中,我们定义了什么是 OOP 以及为什么要利用它。然后,我们清楚地定义了 PHP 中的类和对象。然后,我们为 OOP 的四大支柱分别举例说明。我们了解了什么是抽象、封装、继承和多态,以及它们在 PHP 中是如何工作的。我们还简要地介绍了 PSR,因为我们并不只是想发明标准并开始编写代码,我们还想编写出易于理解和维护的简洁的 PHP 代码,尤其是在企业环境中,在这种环境中,你可能会与许多其他开发人员一起工作,而且你的代码在未来几年中都必须具有很好的可读性和可维护性。
本章应该为你开始编写实际的面向对象 PHP 代码做好了准备—在我们的 TDD 示例项目中,我们将利用 PHP 的 OOP 功能。
在下一章中,我们将讨论单元测试。我们将定义什么是单元测试,以及单元测试在 TDD 中的应用。我们还将介绍不同类型的自动测试。在了解了单元测试的定义后,我们将开始编写第一个单元测试,并开始执行这些单元测试。