我注意到在运行时使用php的error_reporting函数似乎会导致它报告以前发生过的通知。
这是设计,还是有办法防止它?
$er = error_reporting(E_ERROR);
$m = new MyClass();
$m->myFunction();
//error_reporting($er);
在上面的代码中,myFunction()
调用引发警告的第三方代码和/或" strict"注意事项。如果最后一行被注释掉,则不会返回这些警告和通知。但是,如果我取消注释该行以使错误报告可以恢复正常,则会在此时报告严格通知,而不是警告。
更新的
我认为这不是我原先想到的error_reporting
的问题,而是Pear的问题,我使用的是第三方代码。
答案 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