PEAR 1.3.1以降に追加されたPEAR_ErrorStackというエラー処理用クラスがあります。 これは、Pearがインストールされていれば一緒に入っています。
マニュアルによると、このパッケージは次のような特徴があります。
PEAR_ErrorStackは、基本的に第一引数に指定した名前をキーにインスタンスを作成します。 作成したオブジェクトのエラースタックにエラー情報を積みエラーを処理する側はスタック からエラー情報を取得します。
PEAR_ErrorStackのインスタンスは、
$GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]
で管理されパッケージ名($package)で唯一であることが保証されています。
エラーを発生させる処理は、次のようになります。
<?php
define('MYPACKAGE_ERROR_DBERROR', 1);
class myobj{
var $_stack;
function myobj(){
$this->_stack = &PEAR_ErrorStack::singleton('MyPackage');
}
function exec(){
$this->_stack->push(MYPACKAGE_ERROR_DBERROR, 'error',
array('MySQL' => 'DBエラーメッセージ'
,'SQL' => 'エラー情報'),
'Error:DB %MySQL% : SQL Error:%SQL%');
}
}
エラーメッセージの%MySQL(キー)%や%SQL%は、デフォルトでパラメータの連想配列の キーから置換されるようになっています。(getErrorMessage()関数)
エラーを処理する方は、次のようになります。
$stack =& PEAR_ErrorStack::singleton('MyPackage');
$myobj = new myobj;
$myobj->exec();
if($stack->hasErrors()){
$err = $stack->pop();
var_dump($err);
exit;
}
Copyright 1997-2008 BBB All rights reserved.