2013-05-01 5 views
0

PHP에서 error_reporting 함수를 사용하면 런타임에 이전에 발생한 통지가보고되는 것으로 나타났습니다.PHP 호출 error_reporting 이전의 엄격한 통지를보고합니다

이것은 의도적으로 설계 되었습니까? 아니면이를 방지 할 수있는 방법이 있습니까? 위의 코드에서

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

, myFunction() 통화 경고 및/또는 "엄격한"주의 사항을 제기 제 3 자 코드. 위의 행을 주석으로 처리하면 경고 및주의 사항이 리턴되지 않습니다. 그러나 오류보고가 정상으로 돌아갈 수 있도록 해당 줄의 주석을 제거하면 해당 시점에 엄격한 통지가 표시되지만 경고는보고되지 않습니다.

업데이트 나는 이것이 내가 생각 원래했던대로 error_reporting 문제, 대신 배, 내가 사용하고 제 3 자 코드에 문제가되지 않습니다 생각합니다.

내가 런타임에 PHP의 error_reporting은 기능을 사용하면 이전에 발생한 사항을보고를 일으킬 것으로 보인다 것으로 나타났습니다 php pear mail extension raises strict notices

+0

이는 error_reporting의 작동 방식이 아닙니다. 대부분 나중에 해당 코드를 사용합니다. – Wrikken

+0

@wrikken - 당신이 의미하는 것이 확실하지 않습니다. 'error_reporting' 함수는 실제로 어떤 유형의 에러가 런타임에 표시되고 표시되지 않는지를 설정해야합니다. –

+0

예, 나중에 의미를 '저장'하지 않습니다. 해당 줄의 주석 처리를 제거하여 오류가 발생하면 해당 줄 이후에 오류가 발생합니다. – Wrikken

답변

2

에서 내 게시물을 참조하십시오.

당신이 말한 것은 당신이 게시하지 않은 코드 부분과 관련된 필수적인 행동입니다. 내 예를 확인해. 정적이 아닌 메소드를 정적으로 호출하여 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 
+0

엄격한 통지가 아닌 경고를 표시하지 않았습니다. 내가 명확히했듯이, 이후에 제기되는 통지입니다. –

+0

업데이트 된 예제를 확인하십시오. – hek2mgl

+0

감사합니다. 도움이되는 예입니다. 사용하고있는 제 3 자 코드와 관련이없는 엄격한 통지를 방금 시작하려고 시작했습니다. 테스트. 당신의 예를 사용하면 기대할 수있는 행동을 얻습니다. 그러나 원래 게시물에서 설명한 상황은 '잘못'이 아니며 실제로 발생합니다. 'error_reporting'과 관련이 있다고 생각하는 나의 가정은 잘못된 것 같습니다. 아마도 제 3 자 코드에 비동기 코드가있을 수 있습니다. (배와 함께 이메일을 보내고 있습니다) –