void PEAR::setErrorHandling (
integer $mode
= = null
,
mixed $options
= = null
)
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);
?>