我建议去“异常”的方式。
当有用户错误时抛出异常,您可以将php错误转换为异常,如下所示:
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
尽管这种行为在OOP环境中效果最好。如果您没有单个入口点(如前台控制器),您也可能会遇到松散的异常:
function myException($exception)
{
echo "Exception: " , $exception->getMessage();
}
set_exception_handler('myException');
简单的调试与异常会有点像这样:
function parseException($e) {
$result = 'Exception: "';
$result .= $e->getMessage();
$trace = $e->getTrace();
foreach (range(0, 10) as $i) {
$result .= '" @ ';
if (!isset($trace[$i])) {
break;
}
if (isset($trace[$i]['class'])) {
$result .= $trace[$i]['class'];
$result .= '->';
}
$result .= $trace[$i]['function'];
$result .= '(); ';
$result .= $e->getFile() . ':' . $e->getLine() . "\n\n";
}
return $result;
}
从那里评估全球变化等是在公园散步。您可能会为Symfony Framework Debug Toolbar寻找灵感,该工具栏提供了许多这些请求。