深入教程

回顾博客模块

通过本教程,我们使用一个博客作为例子学习了如果使用增删改查功能。 在这个过程中,我们使用了几种不同的设计模式和最佳实践。 现在我们开始回顾下我们编写的这些代码,并以问答的形式作解答。

我们是否总是要在所有的场景中使用接口?

简单来说:不用。

详细说明:接口的重要性是随着你的应用变大而变得重要的。 如果你的应用将来会被别人使用或是可扩展的, 那么就需要考虑下编写并使用接口了。 这是一种基本的最佳实践方式和 Laminas 无关, 而是遵循了通用的面向对象的设计规范。

我们之前介绍的多层编程概念主要是将我们的应用做严格的分离。

将数据库操作放入控制器是非常诱人的,但是我们建议将其拆分为其他的对象, 并在必要的时候提供接口。 这样做的目的是将控制器从具体的实现中解耦, 从而在之后变更实现方式的时候无需更改控制器。 使用接口同时也方便测试,从而你可以很方便的提供 mock。

为什么这里需要如此多的控制器。

除了 ListController 外,我们还为每个路由都创建了一个控制器。

我们可以将其都放入一个控制器中,但是在实施中我们可能会发现如下几个问题:

  • 控制器的复杂度不断增加,从而使得维护变得更加苦难。
  • 依赖也随着功能的增加而不断增加。许多的方法可能只需要其中几个依赖, 从而造成了性能和资源的开销。
  • 测试会变得比较困难。
  • 重用也会不那么容易。

主要问题在于,这种控制器就打破了单一责任原则, 试图去解决所有的问题。

我们建议尽可能的在一个控制器中实现一个操作。

如果还有更多问题? PR them!

如果你还有其他问题,直接去官方论坛提问即可!

发现错误或者想为此文档做贡献? 来 GitHub 编辑!