谁能解释error_reporting(E_ALL);
和之间的区别error_reporting(E_ALL & ~E_NOTICE);
?
我注意到,当我从 更改为 时E_ALL
,E_ALL & ~E_NOTICE
我正在破解的错误消失了。
谁能解释error_reporting(E_ALL);
和之间的区别error_reporting(E_ALL & ~E_NOTICE);
?
我注意到,当我从 更改为 时E_ALL
,E_ALL & ~E_NOTICE
我正在破解的错误消失了。
E_ALL 是“一切”
E_ALL & ~E_NOTICE 是“除通知外的所有内容”
通知是最不紧急的消息。但是它们对于捕捉愚蠢的程序员错误非常有用,例如尝试从不存在的密钥的哈希中读取等。
(要了解语法,请阅读按位运算符)
E_ALL 应该所有的错误和警告和通知 -一切
E_NOTICE 是一个特殊的错误级别,显示不会产生错误但不好或将在未来的 PHP 版本中过时的内容。通知错误级别旨在鼓励最佳实践。
error_reporting(E_ALL ^ E_NOTICE);
除通知外,还应该报告所有内容。
建议您在开发过程中将错误报告设置为 E_ALL 并修复所有通知错误。
查看手册会提供更多详细信息。
E_ALL 是一个标志 E_NOTICE 也是一个标志
因此,当您对 ~ 进行按位运算时,您将从 E_ALL 中排除 E_NOTICE
在引擎盖下发生以下情况
十进制
E_ALL = 32767
E_NOTICE = 8
他们是2的力量
按位
E_ALL = 111111111111111
E_NOTICE = 000000000001000
NOT 的结果将是
111111111110111
然后 php 可以使用 &(AND) 运算符在内部检查通知是否为 ON
111111111110111
000000000001000
1 & 0 = 0
这意味着它已关闭。但是,如果您没有使用 ~ NOT 那么1 & 1 = 1
这意味着该标志已设置
还有其他选项,例如 OR 打开标志,或 XOR 将标志更改为相反状态。基本上,这就是标志的工作方式。