thinkphp5 中有关源代码上的一个问题

1、问题

我自己在 tp5.1的源码的时候,看到 注册错误和异常处理机制的时候,在 error.php 中看到一段代码不是很理解

public static function appError($errno, $errstr, $errfile = '', $errline = 0)
    {
        $exception = new ErrorException($errno, $errstr, $errfile, $errline);
        if (error_reporting() & $errno) {
            // 将错误信息托管至 think\exception\ErrorException
            throw $exception;
        }

        self::getExceptionHandler()->report($exception);
    }

这是error的处理函数,
我对于其中 if (error_reporting() & $errno) 这一段特别不理解。

这个位运算 在这里有什么意义?

阅读 2.1k
2 个回答

整段代码的作用是将你关注的错误转化成异常处理,否则出现错误它就按照错误的处理流程:记录日志,而处理异常的流程里面除了记录日志以外,它还会往客户端发送对应的响应。其中那段位运算就是用来判断发生的错误是不是你关注的错误

如果显示错误(error_reporting() > 0)且有错误产生($errno > 0),则抛出异常
否则只记录错误

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题