[PHP] エラーを表すクラスは、PEAR_Error.
PHPでデータベースを扱うとき、よく以下のようなコードを書きます。
<?php $db = DB::connect($dsn); $res = $db->query('insert into account (name, password) values (?, ?)', array($name, $password)); if (PEAR::isError($res)) { die($res->getMessage()); } ?>
ここで、PEAR::isErrorがtrueとなるときの$resとはなんなのでしょうか? getMessageメソッド以外にもエラーの情報が得られるメソッドを持ってはいないかと思い、調べてみました。みるのは、/usr/share/php/PEAR.phpのPEAR::isErrorメソッドです。
<?php function isError($data, $code = null) { if (is_a($data, 'PEAR_Error')) { if (is_null($code)) { return true; } elseif (is_string($code)) { return $data->getMessage() == $code; } else { return $data->getCode() == $code; } } return false; } ?>
先頭にそのまま書いてあります。エラーと判定するクラスはPEAR_Errorクラスです。実はこのクラスは同じ/usr/share/php/PEAR.phpで定義されていて、toStringという名前のメソッドを持っています。このメソッドを使えば、getMessageよりも詳細なエラーの内容を得ることができます。