数据库连接的单一实例或依赖关系注入模式



通常,一个好的谷歌搜索会话足以回答我的大部分问题,但$this不是其中之一。因此,这是我在这里的第一个问题:

很多人(在SO和其他地方(说Singletton很糟糕。实际上非常糟糕,以至于一些开发人员甚至认为它是一种反基督的模式,应该被依赖注入模式所取代。这个"规则"的唯一例外是伐木器(嗯,几乎(。

有些人认为,因为在 PHP 中变量最多是 1 个请求旧的......

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

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

那么,

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

提前感谢:(

在这种情况下

,单例是一个糟糕的设计。 谷歌会说这在所有情况下都是一个坏主意。

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

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

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

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

最新更新