PEAR基底クラスは、多くのPEARクラスで使用される標準的な機能を提 供します。通常、PEARクラスのインスタンスを直接作成することはあり ません。このクラスのサブクラス化して使用して下さい。
主な機能を以下に示します。
オブジェクト終了処理 "デストラクタ"
エラー処理
ClassNameという名前のクラスで PEAR を継承する場合、 _ClassName (クラス名の前にアンダース コアを付けたもの)というメソッドを定義できます。これは、リクエス トの終了時にコールされます。これは、オブジェクトを"削除"できると いう意味でのデストラクタではなく、実行が終了した際にオブジェクト 内でPHPからのコールバックを指定するという意味で、デストラクタと 呼ばれます。以下の 例 を参照下さい。
PEARの基底クラスは、TRUE/false値や数値コードよりも複雑なエラーを 渡す手段を提供します。PEARのエラーは、クラス PEAR_Errorまたは PEAR_Errorを継承したクラスのインスタンス です。
PEARのエラーの設計指針の一つは、ユーザに特定の型の出力を強制する べきではなく、必要ならば出力を全く行うことなくエラーを処理するこ とを可能にするべきであるというものです。これにより、エラー処理を 柔軟に行うことが可能になり、また、出力形式をHTML以外となる場合 (例えば、WMLまたは他のXML形式)でも処理を行うことが可能となります。
エラーオブジェクトは、作成時にエラーメッセージを出力したり、メッ セージを出力し終了したり、PHPの trigger_error()関数でエラーを発生しコールバッ ク関数を呼び出したり、こうしたことを何もしないといったように何ら かの動作を行うように設定可能です。この動作は、通常、 PEAR_Errorのコンストラクタで指定されます が、全てのパラメータはオプションであり、 PEARクラスに基づく各オブジェクトから生成 されるエラー用にデフォルト値を設定可能です。使用法については PEARエラーの例、詳細 については、PEAR_Errorのリファレンスを参 照下さい。
以下の例は、PEARの「貧乏人のデストラクタもどき」の使用法を示すも ので、定数をファイルに保存する簡単なクラスを実装しており、オブジェ クトにデータを追加し、リクエストの終了時にファイルにデータを書き 戻します。
注意 PEARの"デストラクタ"は、PHPのシャットダウンコールバック (register_shutdown_function())を使用します。 PHPをWebサーバ上で実行している場合には、これらから出力を行うこ とはできません。このため、"デストラクタ"から出力されたものは、 コマンドラインモードでPHPを使用している場合以外は失われます。
次の例は、PEARのエラー処理機構を使用する別の手法について説明する ものです。
例 2PEAR エラーの例 (1)
|
この例は、エラーコードとメッセージを返す fsockopen()へのラッパーの例で、(必要な場合に) fsockopen により返されたメッセージをPEARエラーオブジェクトに渡し ています。値がPEARエラーかどうかを調べるために PEAR::isError() が使用されていることに注意して 下さい。
この例でのPEAR_Errorの処理モードは、単にエラーオブジェクトを返し、 他の処理はユーザ(プログラマ)にまかせています。これがデフォルトの エラーモードです。
次の例では、デフォルトのエラーモードの使用法を示します。
例 3PEAR エラーの例 (2)
|
ここでは、デフォルトのエラーモードを PEAR_ERROR_DIEに設定しており、 raiseErrorコールで(3番目のパラメータにより)エラーモードを指定して いないため、raiseErrorはデフォルトのエラーモードを使用し、 fsockopenが失敗した場合に終了します。