2011-04-08 174 views
4

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

} 

回答

7

,你可以在你的数据库类至极的静态方法将返回自己的一个实例。

$db = DB::getInstance(); 

此外,你可以实现一个单例模式。你可以在这里读到它。

PHP Patterns

主要的想法是,你保存您的数据库对象的静态属性,然后在的getInstance检查,如果它被设置你回吧,或者创建新的,构造函数应为私有,使对象无法被创建在其他地方,但在getInstance ..这确保总是有一个实例的DB对象。

+1

构造函数应该是私有的,以确保没有多于一个类的实例。 – binaryLV 2011-04-08 14:24:47

+0

是的,我忘了提及=)谢谢。 – Headshota 2011-04-08 14:25:29

+0

感谢您的建议!已经实现了Singleton模式,它运行良好。 – aaronfarr 2011-04-08 15:06:08

相关问题