我想知道是否有正确的方法来处理多个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的引用,但是在每个类中创建一个数据库连接。
那么更好的选择是什么?在一个类中创建一个数据库连接并在类之间传递引用,或者在每个类中创建一个数据库连接,同样对于性能最好的是什么?
答案 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';
});