根据PHP中的报告级别触发错误的函数
这是一个愚蠢的问题,但我似乎无法理解与完成此相关的位掩码测试: 假设我创建了一组通用函数来扩展PHP的函数库:根据PHP中的报告级别触发错误的函数,php,error-handling,bitwise-operators,Php,Error Handling,Bitwise Operators,这是一个愚蠢的问题,但我似乎无法理解与完成此相关的位掩码测试: 假设我创建了一组通用函数来扩展PHP的函数库: /** * * @param string $path * @return array */ function load_array($path){ $path = path_file($path); if(null === $path){ // trigger error when appropriate return arra
/**
*
* @param string $path
* @return array
*/
function load_array($path){
$path = path_file($path);
if(null === $path){
// trigger error when appropriate
return array();
}
return ((Array) require($path));
}
path\u file()
是库中的另一个函数,只要假设它是realpath()
我想做的是根据当前运行环境的报告级别触发错误。鉴于这是一个通知,我是否应该简单地测试:
if(error_reporting() <= E_USER_NOTICE){ /***/ }
if(错误报告()
只有在错误报告中启用了E_USER_NOTICE标志时,才会触发,使用位AND操作
如果您假设错误报告标志仅为8位,而用户通知标志位于第4位,则您正在执行以下操作:
00001000 <--- e_user_notice
10101111 <--- some fake error_reporting bitmask
& --------
00001000 <-- e_user_notice is enabled. It's non-zero, so evaluates to 'true' in PHP.
00001000相反。你只需生成通知,当该级别被禁用时,错误处理程序就会忽略它。或者你为什么要这样处理它?谢谢@mario-我总是很长时间(阅读,错误)你当然是对的,因为我显然不想这样做,但我确实这么做了。谢谢@Marc B-这就是我想的方向:)这里的E_NOTICE
是合适的;我想不是因为trigger\u error()
将抛出E\u USER.*
00001000 <--- e_user_notice
10101111 <--- some fake error_reporting bitmask
& --------
00001000 <-- e_user_notice is enabled. It's non-zero, so evaluates to 'true' in PHP.