PEAR::setErrorHandling()

PEAR::setErrorHandling() --  PEAR パッケージにより生成されるエラーの処理方法を指定する

説明

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); ?>