基底クラス PEARの例外処理 その3 [handling]

メモ:  Category:pear

基底クラス PEAR の関数に setErrorHandling という生成されたエラーの処理方法を指定する関数があります。この関数を読んでみます。

まず目に付くのが最初のif文です。

function setErrorHandling($mode = null, $options = null)
{
    if (isset($this) && is_a($this, 'PEAR')) {
        $setmode     = &$this->_default_error_mode;
        $setoptions  = &$this->_default_error_options;
    } else {
        $setmode     = &$GLOBALS['_PEAR_default_error_mode'];
        $setoptions  = &$GLOBALS['_PEAR_default_error_options'];
    }
    //...
}

この関数は、スタティックにも呼ぶことができ、スタティックにコールされた場合すべての PEAR オブジェクトに対するデフォルトのエラー処理動作を設定します。

オブジェクトのメソッドとしてコールされた場合、$obj->setErrorHandling()は、そのオブジェクトだけに対してデフォルトのエラー処理動作を設定します。

注意しないといけないのは、$setmode及び$setoptionに格納されるのは、参照ということです。

それぞれの設定は、次のようにされています。

$GLOBALS['_PEAR_default_error_mode']     = PEAR_ERROR_RETURN;
$GLOBALS['_PEAR_default_error_options']  = E_USER_NOTICE;

//メンバ変数として定義
var $_default_error_mode = null;
var $_default_error_options = null;

あとは、引数の$modeによって動作が決定されます。

bluenote by BBB