0

実行時にphpのerror_reporting関数を使用すると、以前に発生した通知が報告されるように見えることに気付きました。

これは仕様によるものですか、それとも防ぐ方法はありますか?

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

上記のコードでは、myFunction()警告や「厳格な」通知を発生させるサードパーティ コードを呼び出します。上記のように最後の行がコメントアウトされている場合、それらの警告と通知は返されません。ただし、エラー報告が正常に戻るようにその行のコメントを外すと、その時点で厳密な通知は報告されますが、警告は報告されません。

更新 これは当初考えていた問題ではなく、error_reporting私が使用しているサードパーティ コードである Pear の問題だと思います。

phpの私の投稿を参照してください。

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 に答える