我希望在使用未定义的变量时看到一个错误,但是避免看到其他E_NOTICE错误会很好,是否可能?
答案 0 :(得分:2)
正式我建议不要这样做,因为很有可能编写不产生警告或通知的PHP代码。确实,这应该是你的目标 - 消除所有通知和警告。
但是,您可以通过set_error_handler()
使用PHP的自定义错误处理来实现您所要求的,它接受在发出错误时运行的回调函数。
您将在错误字符串undefined index
回调参数中定义函数以对undefined variable
和$errstr
进行字符串匹配。然后,您实际上会覆盖PHP的正常错误报告系统,并替换您自己的错误报告系统。我想重申,我不认为这是一个很好的解决方案。
$error_handler = function($errno, $errstr, $errfile, $errline) {
if (in_array($errno, array(E_NOTICE, E_USER_NOTICE))) {
// Match substrings "undefined index" or "undefined variable"
// case-insensitively. This is *not* internationalized.
if (stripos($errstr, 'undefined index') !== false || stripos($errstr, 'undefined variable') !== false) {
// Your targeted error - print it how you prefer
echo "In file $errfile, Line $errline: $errstr";
}
}
};
// Set the callback as your error handler
// Apply it only to E_NOTICE using the second parameter $error_types
// so that PHP handles other errors in its normal way.
set_error_handler($error_handler, E_NOTICE);
注意:上述其他英语不能自动移植。但如果只是出于自己的目的或限制使用,那可能不是问题。