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-2010 BBB All rights reserved.