您好我试图在配置变量上阻止某些error_reporting事件
<?php
$config['warnings'] = false;
$config['errors'] = false;
if (!$config['warnings'])
{
error_reporting(E_ERROR | E_PARSE);
}
if (!config['errors'])
{
error_reporting(0);
}
?>
但正如你可以看到我做另一个打开的error_reporting语句时,它将替换旧的语句。我怎么能阻止,但只有当展位配置为真,只有一个如果只有一个配置设置为真?
答案 0 :(得分:1)
将其作为嵌套逻辑进行处理。首先检查$config['errors']
并使用error_reporting
或E_ALL
启用或停用0
。
然后从E_WARNING
设置中减去 error_reporting
,方法是调用error_reporting()
以获取当前值。
if ($config['errors']) {
// Enable all
error_reporting(E_ALL);
// Then subtract warnings from the current value
// by calling error_reporting() as its own argument
if (!$config['warnings']) {
error_reporting(error_reporting() & ~E_WARNING);
}
}
else {
// Or disable everything.
error_reporting(0);
}
你没有特别提到E_NOTICE
,但我怀疑你也想要那些残疾人。
error_reporting(error_reporting() & ~E_WARNING & ~E_NOTICE);
如果您希望从略低于E_ALL
的内容开始,则可能需要删除E_DEPRECATED
和E_STRICT
if ($config['errors']) {
// Enable all (but a little less than all)
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
// Then check warnings, etc...
}