setErrorHandling() は、普通のオブジェクトメソッド ($obj->setErrorHandling) としても、スタティックメソッド (PEAR::setErrorHandling) としてもコールできます。 スタティックにコールされた場合、すべての PEAR オブジェクトに対する デフォルトのエラー処理動作を設定します (グローバルなエラー処理動作)。 オブジェクトメソッドとしてコールされた場合、 $obj->setErrorHandling() は、そのオブジェクトだけに対して デフォルトのエラー処理動作を設定します (ローカルなエラー処理動作)。
integer $mode - 以下の定数の1つ
PEAR_ERROR_RETURN 。 エラーが発生した場合、エラー生成メソッド(通常は raiseError()) から、PEAR_Error が返されます。
PEAR_ERROR_PRINT 。 PEAR_ERROR_RETURN と同様の動作に加え、 エラーメッセージが出力されます。
PEAR_ERROR_TRIGGER 。 PEAR_ERROR_RETURN と同様の動作に加え、 PEAR_Error のコンストラクタで、 PHP 組み込み関数 trigger_error() が エラーメッセージを添えてコールされます。
PEAR_ERROR_DIE 。 PEAR_Error の生成時に、エラーメッセージが出力され、 スクリプトが終了します。
PEAR_ERROR_CALLBACK エラーが発生した場合、 $options に指定されたコールバックが コールされます。
PEAR_ERROR_EXCEPTION 。 Zend Engine 2 が存在する場合、 PEAR_Error オブジェクトを使って例外がスローされます。
mixed $options - $options の値は $mode に依る
PEAR_ERROR_PRINT および PEAR_ERROR_DIE は、 エラーメッセージを出力する際に使われる 任意の printf() 形式の文字列をサポートします。 この整形文字列は、1つの %s を含み、 そこにエラーメッセージが挿入されます。 エラーメッセージやそのプレフィックスに示されていない有用な 情報をエラーメッセージに付加するために使用します。
PEAR_ERROR_TRIGGER には、 trigger_error() が使用するエラーレベル定数が 必要です( E_USER_NOTICE, E_USER_WARNING もしくは E_USER_ERRORが使用可能)。 指定されたエラーレベル定数が有効なものでなければ、 PHP の警告 (Warning) が生成されます。
PEAR_ERROR_CALLBACK。 コールバックは、PHP マニュアルの 擬似的な型 についてのセクションに記述の形式による関数名とします。 コールバックは、生成された PEAR_Error を引数に取ります。 指定されたコールバックが有効で無い場合、 PHP の警告 (Warning) が生成されます。
setErrorHandling の使用方法の例を示します。
<?php require_once 'PEAR.php'; // ダミーのエラー定数 define('MYCLASS_ERROR_CODE', 1); // デフォルトのグローバルなエラー処理いついての実例 // この場合、すべての PEAR エラーはPHP の警告 (Warning) を生成します。 PEAR::setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_WARNING); // ファイルと行番号が PEAR.php の PEAR_Error のコンストラクタで // 処理されます。 PEAR::raiseError('test warning', MYCLASS_ERROR_CODE); // このエラーにはモードが設定されており、グローバルなエラー処理を上書きします。 $e = PEAR::raiseError('return only', MYCLASS_ERROR_CODE, PEAR_ERROR_RETURN); PEAR::setErrorHandling(PEAR_ERROR_PRINT, "Gronk error: %s<br />\n"); // "Gronk error: test warning<br />\n" を出力します。 PEAR::raiseError('test warning', MYCLASS_ERROR_CODE); /** * Fake class to demonstrate error handling * @package myClass */ class myClass extends PEAR { /** * ローカルなエラー処理のデフォルトの実例 */ function myClass() { // オブジェクトメソッドのコールバック $this->setErrorHandling(PEAR_ERROR_CALLBACK, array(&$this, 'handleErr')); // "custom handler...is working" を出力 PEAR::raiseError('custom handler', MYCLASS_ERROR_CODE); // スタティッククラスメソッドのコールバック $this->setErrorHandling(PEAR_ERROR_CALLBACK, array('myClass', 'handleErrStatic')); PEAR::raiseError('custom handler', MYCLASS_ERROR_CODE); // 関数のコールバック $this->setErrorHandling(PEAR_ERROR_CALLBACK, 'standardCallback'); PEAR::raiseError('custom handler', MYCLASS_ERROR_CODE); } /** * コンストラクタにより指定されるコールバック * @param PEAR_Error The error object */ function handleErr($error) { $this->lastError = $error->getMessage(); print $error->getMessage() . "...is working\n"; } /** * コンストラクタにより指定されるスタティックなコールバック * * Note that in PHP 5, $this is not set if the method is declared with * the "static" access modifier. In PHP 4, $this is set, but is not * set to the myClass object, so don't use it! * @param PEAR_Error The error object * @static */ function handleErrStatic($error) { print 'static ' . $error->getMessage() . "...is working\n"; } } /** * @param PEAR_Error The error object */ function standardCallback($error) { print 'normal function callback: ' . $error->getMessage(); } // エラー用コールバックを通じて以下の3つのメッセージが出力されます。 // "custom handler...is working" // "static custom handler... is working" // "normal function callback: custom handler" $mine = new myClass; PEAR::setErrorHandling(PEAR_ERROR_DIE); // "oops" というエラーメッセージを出力し、スクリプトを終了させます。 PEAR::raiseError('oops', MYCLASS_ERROR_CODE); ?> |