【问题标题】:What does `!(error_reporting() & $errorcode)` do (PHP)?`!(error_reporting() & $errorcode)` 有什么作用(PHP)?
【发布时间】:2017-01-04 10:26:38
【问题描述】:

我正在尝试编写自己的错误报告函数。作为模板,我正在使用包含此代码 sn-p 的示例:

if (!(error_reporting() & $errorcode)) {
    return;
}

但它究竟做了什么?我不明白error_reporting()$errorcode 之间的& 符号是什么(errorcode 是一个函数参数)。 我尝试输出error_reporting(),我得到了这个(好像它被称为多个):

int(32767)
Unknown errortype: [8] Undefined variable: kj
int(0)
int(0)
int(0)
int(0)
int(0)
int(0)
int(0)
int(0)

然后我在php.net 搜索并看到32767 是错误E_ALL,但它在错误代码下方的行中显示8,这是一个E_NOTICE-错误?! 我不知所措,我无法理解。有人能够详细解释这种行为吗?

【问题讨论】:

标签: php error-handling


【解决方案1】:

如果错误报告被明确禁用,此块将立即返回。您不希望在创建错误的代码禁用错误报告时调用您的错误报告。

【讨论】:

    【解决方案2】:

    对于error_reporting()PHP documentation says

    error_reporting() 函数在运行时设置 error_reporting 指令。 PHP 有许多级别的错误,使用此函数可以为脚本的持续时间(运行时)设置该级别。如果未设置可选级别,error_reporting() 将只返回当前的错误报告级别。

    您可以传递不同的“级别”,例如:E_ALL。这将显示所有错误。

    【讨论】:

    • 您应该真正解释一下按位运算符以及 error_reporting 级别如何受此影响 :)
    猜你喜欢
    • 2010-12-13
    • 1970-01-01
    • 2014-10-12
    • 2016-03-24
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2014-06-11
    • 2011-06-08
    相关资源
    最近更新 更多