我是否遗漏了一些关于PHP使用的内容';什么是PDO?

我是否遗漏了一些关于PHP使用的内容';什么是PDO?,php,database,pdo,Php,Database,Pdo,下面是我正在编写的一段简单代码: class LessonsLearntServiceTyped { private $username = "***********"; private $password = "***********"; private $dsn = "mysql:dbname=lessonslearnt;host=**** ******.db.******.hostedresource.com"; private $dbh;

下面是我正在编写的一段简单代码:

class LessonsLearntServiceTyped
{
    private $username = "***********";
    private $password = "***********";
    private $dsn      = "mysql:dbname=lessonslearnt;host=****
******.db.******.hostedresource.com";
    private $dbh;


    public function __construct(){
        try{
            $dbh = new PDO($this->dsn, $this->username, $this->password);

        }catch(PDOException $e){
            echo "Connection failed: ".$e->getMessage();
        }
    }



     public function returnAllEntries(){
        $query = "select * from lessons_learnt order by id";

    }

}
嗯。我以前在PDO方面没有太多经验,但我在网上看到了一些示例,显然您无法序列化或反序列化PDO对象。(这是我在尝试将PDO对象设置为实例变量以便以后使用时收到的错误消息)

那么,如果我们不能将PDO对象作为实例变量,那么我将如何继续编写
returnAllEntries()
方法?我是否必须再次创建PDO对象,以便在那里使用它??(并且为我编写的每个处理数据库的函数创建一个新的PDO对象)

我错过了什么?

提前谢谢大家

编辑

$this->dbh=newpdo($this->dsn,$this->username,$this->password)是我想做的

但是当我这样做时,我会收到以下错误消息:注意这个错误消息来自我用来测试这个类的PHPUnit控制台。在浏览器中,它不会显示任何错误


“您无法序列化或取消序列化PDO实例”

看起来这是一个非常奇怪的边缘情况,阅读此内容时有例外:


尝试取出
$e->getMessage()
在catch语句中插入一行,看看它是否改变了什么。

我想问题出在我的PHPUnit test runner实例上。

为什么还要序列化它呢?请看,如果我有多个函数,并且每个函数在数据库中执行不同的操作,我希望能够对所有函数只使用一个PDO对象m、 我能看到的唯一方法是将PDO对象设置为一个实例变量,这样我就可以通过编写
$this->dbh
或类似的东西来访问它。等等,你是想把你的PDO对象分配给
$this->dbh
,还是真的在调用
serialize()
?没错!我想从我的代码片段中可以清楚地看到。我只是尝试将PDO对象分配给实例变量!但我得到的错误消息是“无法序列化PDO对象”。实际的错误消息将显示错误源的另一行。