PHP 设计模式的 pitfalls 和解决方案

上周,一位客户询问了 PHP 设计模式,如果使用得当,这将是一个宝石。
但如果它很差,他说,那就是一个缺陷。
我们来谈谈第一个陷阱,那就是设计模式的过度使用。

就像那些吃饭时必须将所有香料混合在一起一样。
结果菜品变得复杂,味道也变差。
例如,如果你做一个简单的日志,就必须使用策略模式。
这不会给你带来麻烦吗?直接写函数就可以了,非常简单,省事。

我以前也经历过这种情况。
伐木中有一个特别复杂的项目。
当他看到的时候,策略模式已经被删除,取而代之的是简单的动作。
代码突然变得非常干净。

第二个困难是选择错误的模式。
例如,虽然有些人更喜欢使用单例模式来管理数据库连接。
这实际上是一个很大的障碍。
Singleton mode's global state is particularly prone to problems in concurrent environments where connection conflicts can easily occur and are difficult to test.
我以前见过一个例子。
我们使用单例模式来管理数据库连接,但是在测试过程中出现了一些问题。
后来,代码为了获得更多控制,他们建议使用连接池或依赖注入。

第三个障碍是形式滥用。
例如,有人将工厂模式视为“万能创造者”。
因此,工厂处理所有对象的创建。
不遵循单一责任原则,维护成本较高。

我之前接手的一个项目都是工厂类的。
光是看着就让人头疼。
后来,工厂被拆分,每个工厂负责创建一种类型的对象。
这样,代码结构就更加清晰了。

实际上,改善这些问题的方法包括直接使用函数处理日志;没有像使用连接池或工厂类等来管理数据库连接那样复杂。

最后,记录决策;单元测试覆盖率;性能监控等方面给客人提出了一些建议。
这使您可以避免部署期间的工程建模问题。

然而,PHP代码高效且可维护的模型的复杂性和现实性您需要在需求之间取得合理的平衡。

php有什么框架模式

哎,说到PHP框架,确实是经历了很多坑。
我记得我刚开始接触PHP。
那还是2 01 2 年,我在一家初创公司。
那时需要更快的交付,需求也发生了变化。
我当时选择的框架是MVC模式。

当时感觉MVC还蛮流行的,层次分明。
Model处理数据,View负责显示,Controller处理任务逻辑。
看起来很科学。
但在实际操作中,确实很头疼。
有一次,计划突然改变。
我需要更改模型中的数据结构。
这就是为什么消息既成为视图又成为控制器的原因。
然后我觉得MVC在学习上是一个很好的模式,甚至耦合度更高。
如果稍微改变一下,整个项目就可能会出现问题。

后来公司项目发生变化,这次吸取教训,选择了MVT模式。
这种模式与MVC很相似,只不过View被Template代替,使得模板管理和业务逻辑可以进一步分离。
有一次,我们公司想要构建一个新功能,需求变化很快。
我立即更改了公式,然后在控制器中进行了一些保存。
模型完全没有动,工程顺利完成。
当时我就觉得MVT模型确实适合速度要求不断变化的项目。

接下来我进入了 MVVM 示例。
已经是2 01 5 年了,我又加了一个大项目,前后端分离。
该项目使用Vue.js作为前端,PHP作为后端API。
MVVM 模型在这里发挥了重要作用。
ViewModel是中转站。
数据绑定和属性依赖使得数据更新自动化,开发性能确实得到了提升。
但这种方法对于实现数据绑定要求比较高。
如果进展不顺利,它可能会有所作为。

一般来说,PHP框架的选择还是应该根据项目的需求。
MVC适合传统的完整开发堆栈,MVT适合更简单的模板管理,MVVM适合前后端分离的现代应用程序。
但这些方法都有其缺陷,通过它们你就会知道它们。
正如我之前所说,MVC 具有较高的连接级别,MVT 是一个复杂的图,MVVM 的数据绑定需要小心处理。
你还记得我踩过的这个坑吗?