【发布时间】:2011-07-01 14:09:46
【问题描述】:
PHP 5 有 error_get_last。有没有办法完全或至少部分复制 PHP4.3 中的相同功能?
【问题讨论】:
标签: error-handling php4
PHP 5 有 error_get_last。有没有办法完全或至少部分复制 PHP4.3 中的相同功能?
【问题讨论】:
标签: error-handling php4
摘自PHP manual(由 php at joert dot net 提供):
<?php
if( !function_exists('error_get_last') ) {
set_error_handler(
create_function(
'$errno,$errstr,$errfile,$errline,$errcontext',
'
global $__error_get_last_retval__;
$__error_get_last_retval__ = array(
\'type\' => $errno,
\'message\' => $errstr,
\'file\' => $errfile,
\'line\' => $errline
);
return false;
'
)
);
function error_get_last() {
global $__error_get_last_retval__;
if( !isset($__error_get_last_retval__) ) {
return null;
}
return $__error_get_last_retval__;
}
}
?>
【讨论】:
是的,但是你必须做一些编程,你需要附加错误处理程序
$er_handler = set_error_handler("myErrorHandler");
但在此之前您需要编写“myErrorHandler”
function myErrorHandler($errNumber, $errString, $errFile, $errLine)
{
/*now add it to session so you can access it from anywhere, or if you have class with the static variable you can save it there */
$_SESSION["Error.LastError"] = $errNumber . '<br>' . $errString . '<br>' . $errFile . '<br>' . $errLine;
}
现在发生错误时可以通过
if(isset($_SESSION["Error.LastError"]))
$str = $_SESSION["Error.LastError"];
现在要复制您需要创建函数的方法
function get_last_error()
{
$str = "";
if(isset($_SESSION["Error.LastError"]))
$str = $_SESSION["Error.LastError"];
return $str;
}
【讨论】:
error_get_last 不会在会话之间持续存在(它只是在当前执行环境的上下文中)。将其存储在全局变量或其他东西中可能更好。
error_get_last 仅适用于当前脚本。它不会从一个连接持续到下一个连接。