0

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

这是设计使然,还是有办法阻止它?

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

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

更新 我认为这不是error_reporting我最初认为的问题,而是我正在使用的第 3 方代码 Pear 的问题。

请参阅我在php pear 邮件扩展上的帖子提出了严格的通知

4

1 回答 1

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 
于 2013-05-01T19:55:30.017 回答