php错误级别中体现出的位思想
官网截图:
可以看到,左侧的数字其实是有规律的。用二进制表示的话,每个位都代表了一种错误。一共2Byte大小,也就是16位.
首位表示符号的话,也就是有15位是表示最后的错误级别的。
E_ERROR 000000000000001
E_WARNING 000000000000010
...
E_ALL 111111111111111
我们之前有说到:set_error_handler完全无视error_reporting的设置.
那么,有两种方式可以去让它遵从error_reporting的设置。
第一种是利用第二个参数。
set_error_handler('handleError', error_reporting());
第二种是在handleError内部判断:
public function handleError($type, $message, $file = '', $line = 0, $context = array())
{
if (error_reporting() !== 0) {
$error_types = error_reporting();
if ($error_types & $type) { // &按位取与
// do your things
}
}
}