2

我有这样的课程:

类页面.php

class pages {

    private $dbh;

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

类新闻.php

class news {

    private $dbh;

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

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

是正确的方式吗?还是直接/间接发生任何冲突?

4

1 回答 1

1

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

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

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

于 2013-01-28T03:31:15.373 回答