Source for file Ethna_Error.php
Documentation is available at Ethna_Error.php
// vim: foldmethod=marker
* @author Masaki Fujimoto <fujimoto@php.net>
* @license http://www.opensource.org/licenses/bsd-license.php The BSD License
* @version $Id: Ethna_Error.php 478 2007-07-20 18:08:22Z mumumu-org $
// {{{ ethna_error_handler
* @param int $errno エラーレベル
* @param string $errstr エラーメッセージ
* @param string $errfile エラー発生箇所のファイル名
* @param string $errline エラー発生箇所の行番号
$php_errno =
'Fatal error'; break;
$php_errno =
'Warning'; break;
$php_errno =
'Parse error'; break;
$php_errno =
'Notice'; break;
$php_errno =
'Unknown error'; break;
$php_errstr =
sprintf('PHP %s: %s in %s on line %d',
$php_errno, $errstr, $errfile, $errline);
$logger =
& $c->getLogger();
$logger->log($level, sprintf("[PHP] %s: %s in %s on line %d",
$name, $errstr, $errfile, $errline));
$config =
& $c->getConfig();
$is_debug =
$config->get('debug');
$facility =
$logger->getLogFacility();
?
in_array('echo', $facility) :
$facility ===
'echo';
if ($is_debug ==
true &&
$has_echo ===
false) {
$format =
"<b>%s</b>: %s in <b>%s</b> on line <b>%d</b><br />\n";
$format =
"%s: %s in %s on line %d\n";
printf($format, $php_errno, $errstr, $errfile, $errline);
* @author Masaki Fujimoto <fujimoto@php.net>
/** @var object Ethna_I18N i18nオブジェクト */
/** @var object Ethna_Logger loggerオブジェクト */
* @param int $level エラーレベル
* @param string $message エラーメッセージ
* @param int $code エラーコード
* @param array $userinfo エラー追加情報(エラーコード以降の全ての引数)
function Ethna_Error($message =
null, $code =
null, $mode =
null, $options =
null)
if ($controller !==
null) {
$this->i18n =
& $controller->getI18N();
// $options以降の引数->$userinfo
if (count($userinfo) ==
1) {
$userinfo =
$userinfo[0];
} else if (is_null($userinfo[0])) {
$message =
$controller->getErrorMessage($code);
$message =
'unknown error';
parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
// Ethnaフレームワークのエラーハンドラ(PEAR_Errorのコールバックとは異なる)
* PEAR_Error::getMessage()をオーバーライドして以下の処理を行う
* - $userinfoとして渡されたデータによるvsprintf()処理
* @return string エラーメッセージ
$tmp_message =
$this->i18n ?
$this->i18n->get($this->message) :
$this->message;
$tmp_userinfo =
to_array($this->userinfo);
$tmp_message_arg_list =
array();
for ($i =
0; $i <
count($tmp_userinfo); $i++
) {
$tmp_message_arg_list[] =
$this->i18n ?
$this->i18n->get($tmp_userinfo[$i]) :
$tmp_userinfo[$i];
return vsprintf($tmp_message, $tmp_message_arg_list);
* PEAR_Error::getUserInfo()をオーバーライドして、配列の個々の
* @param int $n エラー追加情報のインデックス(省略可)
* @return mixed message引数
if (isset
($this->userinfo[$n])) {
return $this->userinfo[$n];
* PEAR_Error::addUserInfo()をオーバーライド
* @param string $info 追加するエラー情報
$this->userinfo[] =
$info;
Documentation generated on Thu, 08 May 2008 00:14:50 +0900 by phpDocumentor 1.4.2