【问题标题】:Globally available database connection without using Global/Singleton不使用 Global/Singleton 的全局可用数据库连接
【发布时间】:2011-09-22 09:32:37
【问题描述】:

我正在创建一个新的 PHP 应用程序,并希望确保我能够正确地完成基础工作以解决任何未来的问题。我知道我的应用程序将有多个需要数据库连接 (PDO) 的类,并且在互联网上搜索了很长时间后,我找不到明确的解决方案。

我个人喜欢单例设计模式,但也有很多人说通常应该不惜一切代价避免使用单例。然而,这些人并没有针对这个问题给出具体的解决方案。

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

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

【问题讨论】:

标签: php design-patterns singleton pdo


【解决方案1】:

我个人认为单例(或多例,如果您需要多个数据库连接)适合这种用法。

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

这样,您可以让您的数据库类实例可用于所有应用程序的类,而不必每次都传递额外的参数(这很丑陋,恕我直言)。

【讨论】:

  • 谢谢,我认为 multiton 会很好,但我想这归结为个人喜好
【解决方案2】:

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

你可以,它叫做multiton模式

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多