我想启动一个包含所有PHP错误信息的JavaScript警告框。我已经设法使用PHP的set_error_handler(),但它一直在启动默认错误,并且它不会让我选择其他可能性。
set_error_handler(custom_error_handler());
function custom_error_handler($errno, $string, $file, $line)
{
switch ($errno)
{
case E_ERROR:
case E_USER_ERROR:
echo "ERROR";
break;
case E_WARNING:
case E_USER_WARNING:
echo "WARNING";
break;
case E_NOTICE:
case E_USER_NOTICE:
case E_DEPRECATED:
case E_USER_DEPRECATED:
case E_STRICT:
echo "NOTICE";
break;
default:
echo "WTF?";
break;
}
return true;
}
ini_set("display_errors", "0");
error_reporting(E_ALL);
trigger_error("Hello, Error!", E_USER_NOTICE);
答案 0 :(得分:1)
如果您的switch case
语句未涵盖某种类型的错误,则此错误处理程序仅显示Javascript错误。由于您引发了E_USER_NOTICE,您只需将文本“NOTICE”作为页面的输出,这显然不会显示在警报中。
此外,正如R. Barzell在答案中提到的那样,在custom_error_handler)
注册错误处理程序时,应该省略括号。除此之外,您可能需要在声明函数'custom_error_handler'之后调用set_error_handler(custom_error_handler);
。
答案 1 :(得分:0)
从set_error_handler调用中的“custom_error_handler”中删除()。如:
set_error_handler(custom_error_handler);
内部函数末尾的()实际上是对它进行求值,而不是将其设置为回调。
任何时候想要将函数传递给另一个函数,都不要使用()。只有在想要评估函数时才添加它,并将其结果传递给函数。