error_reporting() 设置 PHP 的报错级

error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT ^ E_DEPRECATED);
哥们们,帮我解释下这行代码是什么意识,设置什么报错级别,

阅读 3k
2 个回答

这里所代表是意思是:输出所有类型的错误(E_ALL),但排除E_NOTICE、E_STRICT、E_DEPRECATED这几种类型的错误。

这里使用了一个位运算的技巧,因为E_ALL是一个全1数,而E_NOTICE、E_STRICT、E_DEPRECATED都为单1数,这几个异或一下,就形成了一个排除这几项的日志级别的数。

查阅PHP官方文档就可以知道:error_reporting
上面的代码表示的意思是:除了E_NOTICE E_SCRICT E_DEPRECATED 之外的错误全部都报告。
E_ALL ^ E_NOTICE ^ E_STRICT ^ E_DEPRECATED这个是连续的异或操作。
E_ALL E_NOTICE E_STRICT E_DEPRECATED 这些都是常量,对应的二进制大致如下

E_NOTICE 00001 
E_STRICT 00010
E_DEPRECATED 00100
E_ALL 11111

进行异或操作之后,相当于是把相同的变成0 不同的变成1 也就是说得到的结果是E_ALL排除了进行异或操作的那几个。
以上常量对应的值纯属虚构,具体可以试着打印出来看下到底是多少。
同理还可以使用 E_NOTICE | E_STRICT这样的方法来设置多个级别进行报告。原理是进行或操作之后有1则1,全0则0

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