-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 に答える