php调用error_reporting报告以前的严格通知

时间:2013-05-01 19:50:21

标签: php error-suppression

我注意到在运行时使用php的error_reporting函数似乎会导致它报告以前发生过的通知。

这是设计,还是有办法防止它?

$er = error_reporting(E_ERROR);
$m = new MyClass();
$m->myFunction();
//error_reporting($er);  

在上面的代码中,myFunction()调用引发警告的第三方代码和/或" strict"注意事项。如果最后一行被注释掉,则不会返回这些警告和通知。但是,如果我取消注释该行以使错误报告可以恢复正常,则会在此时报告严格通知,而不是警告。

更新的 我认为这不是我原先想到的error_reporting的问题,而是Pear的问题,我使用的是第三方代码。

请参阅php pear mail extension raises strict notices

上的帖子

1 个答案:

答案 0 :(得分:2)

  

我注意到在运行时使用php的error_reporting函数似乎会导致它报告以前发生过的通知。

您所说的只是与您未发布的代码部分相关的常规行为。检查我的例子。它将静态调用非静态方法,这将导致E_STRICT消息:

Class A { 
    public function notStatic() {}
}

$a = new A();

error_reporting(~E_ALL);
$a::notStatic();   // ... silence

error_reporting(E_ALL);
$a::notStatic();   // Strict standards: Non-static method A::notStatic() should not be called statically in