php - 在类之间共享数据库连接的最佳方式

标签 php database class-design

我希望能够对 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;
  }

}

最佳答案

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

$db = DB::getInstance();

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

PHP Patterns

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

关于php - 在类之间共享数据库连接的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5596251/

相关文章:

php - 如何从列表 MySQL 中删除特定数字

MySQL List Set理论,关系型数据库

c++ - 很多相互依赖的状态如何使用设计模式?

php - 如何添加到关联数组

php - 将字符串日期格式化为 mysql 日期

php - PostGisl Pdo 准备插入 : functions quoted

mysql - 如何使用 DATE_FORMAT 优化 mysql group by

android - 类型转换器不工作

C++类设计: member and local variables

database - DB 层成员应该是静态的还是实例的?