Php 将相同的PDO对象传递给不同的类
我有这样的课程: classPages.phpPhp 将相同的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
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实例的某些属性,并且依赖于在另一个类中使用不同的属性(但这是不太可能的)
面向对象编程的目标之一就是重用资源,这正是它所做的。是的,这是一个伟大的设计,它被称为依赖注入。