【发布时间】:2013-05-29 14:26:28
【问题描述】:
我有一个关于使用 PDO 的问题,但我无法找到答案。这对于 mysql/mysqli 连接可能也同样适用。
在我的项目的主要包含中,我使用创建一个 PDO 对象
$pdo = new PDO('connection here');
嗯,我有一个需要访问数据库的类。因此,不要使用“global $pdo;”在每个函数内部,我做了以下操作。
class MyClass(){
private $db = null;
__construct(){
global $pdo;
$this->db = $pdo;
}
function example(){
$sql = 'A Query';
$this->db->prepare($sql);
}
}
无论如何,我的问题是,这样做是否会创建 2 个到数据库的连接,因为我通过将类的 $db var 设置为等于它来有效地复制 $pdo?我问的主要原因是因为我在我们的系统中经常看到这种情况,并且担心创建太多与 MySQL 的连接并由于不必要的连接而导致系统崩溃。
作为第二部分,以下是否会导致重复,我可以通过 ref 吗?我有点害怕尝试它并导致损坏。
改变
function MyFunction($member_id, $pdo){
//do something.
}
到
function MyFunction($member_id, &$pdo){
//do something
}
谢谢!
【问题讨论】:
-
刚刚回答了这个问题:PHP Object Assignment vs Cloning。答案应该可以消除您的困惑。
-
这是同一个对象,因为对象总是与引用一起存储
-
附带说明,从老派 mysql_connect() 返回的连接是否符合这些规则?
-
@GameCharmer 返回一个叫做“资源”的东西,这是另一种奇怪的变量;然而,和对象一样,变量的“值”只是资源的 ID,因此赋值的工作方式与对象类似。