根据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

这是一个愚蠢的问题,但我似乎无法理解与完成此相关的位掩码测试:

假设我创建了一组通用函数来扩展PHP的函数库:

/**
 *
 * @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.