全局可用的数据库连接,不使用全局/单例


Globally available database connection without using Global/Singleton

我正在创建一个新的PHP应用程序,并希望确保基础工作正确,以避免将来出现任何问题。我知道我的应用程序将有一个以上的类,将需要一个数据库连接(PDO),经过很长一段时间搜索互联网,我找不到一个明确的解决方案。

我个人喜欢单例设计模式,但是有很多人认为应该不惜一切代价避免单例。然而,这些人并没有给出解决这个问题的具体方法。

我明白一个应用程序可能需要多个数据库连接,但我不能创建一个包含每个所需数据库连接的单例(即DB::getInst('conn1')->query();)?

是否必须将PDO(或PDO包装器)对象传递给可能需要它的每个类?我以前这样做过,发现跟踪它很烦人。

我个人认为单例(或多例,如果你需要几个DB连接)对于这种用法是好的。

但是如果你不想使用它,你应该看看Registry模式。

这样,您就可以让您的数据库类实例可用于您的所有应用程序类,而不必每次都传递一个额外的参数(这是非常丑陋的,IMHO)。

,但我不能创建一个包含每个所需DB连接的单例(即DB::getInst('conn1')->query();)

?

你可以,它叫做多重模式