【问题标题】:The best way to share database connection between classes在类之间共享数据库连接的最佳方式
【发布时间】:2011-04-08 14:04:36
【问题描述】:

我希望能够从 print_r 隐藏我的数据库连接,因此我使用的是静态变量。我有一个基类和一些对象类。理想情况下,它们都将共享相同的数据库连接。分享这个的最佳方式是什么? 我现在设置它的方式“有效”,但感觉不对。必须是这样做的更好方法。 (从逻辑上讲,这些类不应该相互继承)

class base {

  private static $db;

  function __construct() {

    self::$db = new DB(); // our database class
    $foo = new Foo( self::$db ); // some other class that needs the same connection

  }

}

class Foo {

  private static $db;

  function __construct( $db ) {
    self::$db = $db;
  }

}

【问题讨论】:

    标签: php database class-design


    【解决方案1】:

    你可以在你的数据库类中有一个静态方法,它会返回一个自身的实例。

    $db = DB::getInstance();
    

    此外,您可以实现单例模式。你可以在这里阅读。

    PHP Patterns

    主要思想是您将 DB 对象保存在静态属性中,然后在 getInstance 中检查它是否已设置您将其返回或创建新的,构造函数应设为私有,以便对象不能在其他任何地方创建,只能在getInstance.. 这样可以确保始终有一个 DB 对象实例。

    【讨论】:

    • 构造函数应该是私有的,以真正确保一个类的实例不超过一个。
    • 感谢您的建议!已经实现了单例模式并且效果很好。
    • @Headshota 链接不再可用
    猜你喜欢
    • 1970-01-01
    • 2012-03-30
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多