将相同的PDO对象传递给不同的类

时间:2013-01-28 03:28:35

标签: php pdo

我有这样的课程:

classPages.php

class pages {

    private $dbh;

    function __construct($dbh) { 
        $this->dbh = $dbh;
    }
    //...
}

classNews.php

class news {

    private $dbh;

    function __construct($dbh) { 
        $this->dbh = $dbh;
    }
    //...
}

classMod.php

class mod {

    private $dbh;

    function __construct($dbh) { 
        $this->dbh = $dbh;
    }
    //...
}

在索引页面中:

try
{
    $dbh = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
}
catch(PDOException $ex)
{
    die("Failed to connect to the database: " . $ex->getMessage());
}

require 'classPages.php';
require 'classNews.php';
require 'classMod.php';

$pages = new pages($dbh);
$news = new news($dbh);
$mod = new mod($dbh);

//use above objects where needed

所以我创建了单个PDO对象。然后将其传递给每个类的构造函数。然后我使用这些对象并调用它的成员函数,它使用传递给构造函数的pdo对象来获取和插入数据。

这是正确的方法吗?或者直接/间接发生任何冲突?

1 个答案:

答案 0 :(得分:1)

这是正确的方法。您不是每次都创建不同的数据库连接,这是最佳的(不确定新的PDO实例是否仍然这样做,但您至少可以确定)。

在PDO中准备语句时,它会创建一个单独的实例,因此不必担心会发生冲突。唯一可能的问题是,如果您在一个类中更改PDO实例的某些属性,并依赖于在另一个类中使用不同的属性(但这不太可能)。

面向对象编程的目标之一是重用资源,这正是它所做的。