如何处理多个类之间的PDO连接

时间:2014-06-04 18:05:17

标签: php mysql pdo

我想知道是否有正确的方法来处理多个PDO类之间的PDO连接,我用一个例子来解释我的问题:

$db = new PDO("mysql:dbname='myDB';host=localhost; "user", "password");

$classa = new ClassA($db);

//Then Class A use the PDO and maybe pass the $db to other class etc

//set $db = null only in this class where i have created it
$db = null; //this is needed?

或者不像上面的例子那样传递$ db的引用,但是在每个类中创建一个数据库连接。

那么更好的选择是什么?在一个类中创建一个数据库连接并在类之间传递引用,或者在每个类中创建一个数据库连接,同样对于性能最好的是什么?

3 个答案:

答案 0 :(得分:0)

好吧,如果你打扰简单的研究,那么你会发现第一个选项是唯一可接受的选项,而且是一种主流方法。打开多个连接是没有意义的,很可能会杀死您的数据库服务器。

答案 1 :(得分:0)

在bootstrap文件中,即“加载”所有其他文件的起始点,即加载数据库类。

在你的“bootstrap”类中,你可以拥有一个静态的“服务”数组(初始化类),你可以使用另一种静态方法,比如App()::getService('DbConnection'),到处获得它。

这将返回您可以进行查询的PDO对象,而不需要为每个类创建新对象。

还有很多方法,这只是我想到的第一个方法。你可以肯定看一下有服务的“微框架”,这样你就可以避免它了。如果你想进行实验,那就好了。

答案 2 :(得分:-1)

你可以试试这个:

class A {
    public $db;

    function __construct() {
        $this->db = new PDO("mysql:dbname='myDB';host=localhost"; "user", "password");
    }
}

class B {
    private $db;

    function __construct() {
        $classA = new A();
        $this->db = $classA->db;
    }
}

您可能还需要执行以下操作,但我不确定: 在随处可见的文件中:

spl_autoload_register(function($class) {
    include_once 'classes/'.$class.'.php';
});