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

Php 将相同的PDO对象传递给不同的类,php,pdo,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

我有这样的课程:

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对象来获取和插入数据


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

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

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


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

是的,这是一个伟大的设计,它被称为依赖注入。