我希望能够对 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();
此外,您还可以实现单例模式。你可以在这里阅读它。
主要思想是将 DB 对象保存在静态属性中,然后在 getInstance 中检查它是否已设置,您将其返回或创建新的,构造函数应设为私有(private),以便只能在其他任何地方创建对象getInstance.. 这可确保始终存在一个 DB 对象实例。
关于php - 在类之间共享数据库连接的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5596251/