用于数据库连接的单例或依赖注入模式

时间:2013-09-23 22:12:10

标签: php design-patterns dependency-injection singleton

通常,一个好的谷歌搜索会议就足以回答我的大多数问题,但$this不是其中之一。因此,这是我的第一个问题:

很多人(在SO和其他地方)说Singletton很糟糕。实际上是如此糟糕,一些开发人员甚至认为它是反基督反模式,应该被依赖注入模式取代。这个“规则”的唯一例外是记录器(好吧,almost)。

Some argue因为在PHP变量中最多只有1个请求旧...

  

[...] Singleton的两个主要目的之一在这里不适用。

但在该一个请求期间,可能/将发生来自数据库的多次提取。数据库是所有请求之间的共享资源,如果我不确定连接数尽可能少,我可能会遇到max_connections错误(仅举例)。

因此,如果在大多数情况下Singleton是一个糟糕的设计,那么管理数据库连接呢? Singleton是个好主意还是我应该选择DI?

提前致谢:)

2 个答案:

答案 0 :(得分:2)

在这种情况下,单身人士是一个糟糕的设计。 Google会说在所有情况下这都是个坏主意。

这里正确的答案是连接池。

通过将池配置为远低于限制并确保代码在完成后立即严格关闭所有连接,可以避免最大连接问题。周期应该非常短:检查出池,执行SQL,关闭连接。

答案 1 :(得分:0)

数据库连接的Singleton模式也是个坏主意。您使用(或需要)与数据库的连接数取决于您的应用程序设计。

您可以在整个请求中使用相同的数据库连接类实例,但不使用单例模式。