개발에 권장되는 error_reporting() 설정은 무엇입니까?E_STRICT는 어떻습니까?

StackOverflow https://stackoverflow.com/questions/74847

  •  09-06-2019
  •  | 
  •  

문제

일반적으로 나는 E_ALL PHP가 내 코드에 대해 말할 수 있는 내용을 확인하여 코드를 개선하려고 합니다.

방금 오류 상수를 발견했습니다. E_STRICT, 하지만 사용해본 적도 들어본 적도 없는데, 개발에 사용하기에 좋은 설정인가요?설명서에는 다음과 같이 나와 있습니다.

런타임 알림.PHP가 코드의 최상의 상호 운용성과 향후 호환성을 보장하는 코드 변경 사항을 제안하도록 활성화합니다.

그래서 내가 가장 좋은 것을 사용하고 있는지 궁금합니다. error_reporting 와 수평을 이루다 E_ALL 아니면 그것도 같이 할래? E_STRICT 최고가 될까?아니면 아직 배우지 못한 다른 조합이 있나요?

도움이 되었습니까?

해결책

PHP 5에서 다루는 내용은 다음과 같습니다. E_STRICT 다음 사항에 포함되지 않습니다. E_ALL, 이므로 최대한 많은 정보를 얻으려면 다음과 같이 결합해야 합니다.

 error_reporting(E_ALL | E_STRICT);

PHP 5.4에서는 E_STRICT 에 포함될 것이다 E_ALL, 그래서 당신은 단지 사용할 수 있습니다 E_ALL.

당신은 또한 사용할 수 있습니다

error_reporting(-1);

항상 활성화됩니다. 모두 오류.다음과 같이 의미상 더 정확합니다.

error_reporting(~0);

다른 팁

php.ini에서 다음을 사용하십시오:

error_reporting = E_ALL | E_STRICT

또한 설치해야합니다 X디버그, 눈부신 밝은 색상의 오류를 강조하고 유용한 세부 정보를 인쇄할 수 있습니다.

비록 그것이 무해하더라도 코드에 어떤 오류나 통지도 허용하지 마십시오.

제 생각에는 개발 단계에서 오류 보고 수준을 높게 설정할수록 좋습니다.

실제 환경에서는 약간(그러나 약간만) 축소된 세트를 원하지만 사용자가 볼 수 없는 곳에 기록하기를 원합니다. syslog).

http://php.net/error_reporting

E_ALL | E_STRICT 5.2.0 이전의 PHP 개발용.

5.2 소개 E_RECOVERABLE_ERROR 5.3에서는 다음을 소개합니다. E_DEPRECATED 그리고 E_USER_DEPRECATED.해당 버전 중 하나를 실행 중인 경우 해당 버전을 켜는 것이 좋습니다.

매직 넘버를 사용하고 싶다면 error_reporting 상당히 높은 가치로 평가 2^n-1 - 말하다, 16777215, 그러면 실제로는 사이의 모든 비트가 활성화됩니다. 1..n.하지만 매직넘버를 사용하는 것은 좋은 생각이 아닌 것 같아요...

내 생각에 PHP는 다음과 같은 이유로 공을 약간 떨어뜨렸습니다. E_ALL 실제로는 전부는 아닙니다.하지만 PHP 6에서는 수정될 것으로 보입니다.

최신 PHP 버전에서는 E_ALL에 더 많은 오류 클래스가 포함되어 있습니다.PHP 5.3부터 E_ALL에는 모든 것이 포함됩니다. 제외하고 E_STRICT.PHP 6에서는 그것까지 포함할 것으로 추정됩니다.이것은 좋은 힌트입니다:오류 메시지를 적게 보는 것보다 더 많은 오류 메시지를 보는 것이 좋습니다.

E_ALL에 포함된 내용은 PHP 사전 정의 상수 온라인 설명서의 페이지.

개인적으로는 E_STRICT를 사용하면 크게 상관없다고 생각합니다.확실히 당신에게 해를 끼치지는 않을 것입니다. 특히 향후 PHP 버전에서 깨질 가능성이 작은 스크립트를 작성하는 것을 막을 수 있기 때문입니다.반면에 엄격한 메시지는 너무 시끄러울 수 있으며, 특히 서두르는 경우에는 더욱 그렇습니다.기본으로 켜두시고, 거슬리시면 꺼두시길 권해드립니다.

당신은 사용할 수 있습니다 error_reporting = -1
항상 모든 비트로 구성됩니다(E_ALL에 없더라도).

이 코드에 대한 장기 지원 계획에 따라 다음을 사용하여 디버깅합니다. E_STRICT 활성화하면 먼 미래에도 코드가 계속 작동하는 데 도움이 될 수 있지만 일상적인 사용에는 과잉일 수 있습니다.두 가지 중요한 사항이 있습니다. E_STRICT 유의 사항:

  1. 매뉴얼에 따르면, 최대 E_STRICT 오류는 런타임이 아닌 컴파일 타임에 생성됩니다.오류 수준을 다음으로 높이는 경우 E_ALL 코드 내에서(통하지 않고) php.ini), 당신은 결코 볼 수 없습니다 E_STRICT 어쨌든 오류.
  2. E_STRICT 내에 포함되어 있습니다 E_ALL PHP 6에서는, PHP 5에서는 그렇지 않습니다.서버를 PHP6으로 업그레이드하고 E_ALL 위의 #1에 설명된 대로 구성하면 다음과 같은 내용이 표시됩니다. E_STRICT 사용자가 추가로 변경할 필요 없이 오류가 발생합니다.

error_reporting에 대해 엄밀히 말하면, 나는 강하게 구문 분석 오류와 일반적인 결함(예: 조건에 따른 할당)을 자동으로 표시하는 IDE를 사용하는 것이 좋습니다.

Zend Studio for Eclipse에는 이 기능이 기본적으로 활성화되어 있는데, 제가 이 기능을 사용하기 시작한 이후로 많은 도움이 되었습니다. 많이 오류가 발생하기 전에 잡아냅니다.

예를 들어, 다음 코드에서 일부 데이터를 캐싱하고 있었습니다. $GLOBALS 가변적이지만 실수로 썼습니다. $_GLOBALS 대신에.데이터는 결코 캐시되지 않았으며 Zend가 나에게 다음과 같이 말하지 않았는지 전혀 알 수 없었습니다."야, 이거 $_GLOBALS 한 번만 나타나는데 오류일 수 있습니다."

ini_set("display_errors","2");ERROR_REPORTING(E_ALL);

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top