-1

我在一个名为的类中有以下方法Connection

public function output($query = null) {
    if (!empty($this->attributes["link"])) {
        print "OK!";
    } else {
        print "NO!";
    }
}

的值$this->attributes["link"]来自构造函数中的以下操作:

try {
    $this->attributes["link"] = new \PDO(<...>);
catch (\PDOException $e) {
    <...>
} finally {
    return $this;
}

我通常使用该if (!empty(<...>)) { <...> }构造来测试变量是否存在,并且到目前为止,它在每个结构或代码段中都按预期工作,除了这个。

作为一个对象似乎不是它不起作用的原因,因为我可以针对数据库管理器对象测试相同的检查,并且它可以工作。也许 PDO 对象是一种特殊的对象,不容易进行变量测试,或者我缺少什么?

编辑- 我的软件配置如下:Linux 3.11.1、Apache 2.4.6、PHP 5.5.4 和 MySQL 5.6.13

4

1 回答 1

0

为什么不检查是否是 PDO 实例?

if ($this->attributes['link'] instanceof \PDO) {
    // ...
} else {
    // ...
}
于 2013-09-22T11:04:15.050 回答