stackoverflow 에서이 문제는 항상 발생합니다.
- E_NOTICE? == E_DEBUG,보다 복잡한 error_handler를 사용하여 isset () 및 @ 피하기
- E_NOTICE가 켜져있을 때 $ _GET에 대해 정의되지 않은 인덱스를 확인하지 않도록 PHP를 설정하는 방법은 무엇입니까?
- PHP가 PHP 통지 오류를 기록하지 못하게하는 방법
- PHP 5.3 공지를 끄려면 어떻게해야합니까?
심지어 페카 (고체 PHP 조언을 많이 제공) 지칠대로 지친에 충돌 한 E_NOTICE
괴물과 희망 사용하는 것보다 더 나은 솔루션 isset()
: 는 isset () 못생긴 비우 () 메이크 코드
개인적으로, 나는 사용 isset()
하고 empty()
여러 곳에서 내 응용 프로그램의 흐름을 관리 할 수 있습니다. 예를 들면 다음과 같습니다.
public function do_something($optional_parameter = NULL) {
if (!empty($optional_parameter)) {
// do optional stuff with the contents of $optional_parameter
}
// do mandatory stuff
}
다음과 같은 간단한 스 니펫도 :
if (!isset($_REQUEST['form_var'])) {
// something's missing, do something about it.
}
나에게 매우 논리적으로 보인다. 부풀어 오른 것처럼 보이지 않고 안정적인 코드처럼 보입니다. 그러나 많은 개발자가 E_NOTICE
활성화 된 상태에서 응용 프로그램을 실행 하고 많은 "초기화되지 않은 배열 인덱스"알림을 발견 한 다음 정의 된 변수를 확인하고 코드를 "글리터링"할 수 있다는 점에서 얼굴을 찡그 isset()
립니다.
다른 언어가 다르게 처리한다고 가정합니다. 경험상 말하면, JavaScript는 PHP만큼 예의가 없습니다. 정의되지 않은 변수는 일반적으로 스크립트 실행을 중단합니다. 또한 ( 경험이 없다고 말하면 ) C / C ++와 같은 언어는 단순히 컴파일을 거부 할 것이라고 확신합니다.
PHP 개발자는 게으른가요? (당신에 대해 이야기하지 않고, Pekka, 나는 당신이 오래된 응용 프로그램을 리팩토링하고 있다는 것을 알고 있습니다.) 아니면 다른 언어가 정의되지 않은 변수를 정의했는지 프로그래머가 먼저 정의했는지 확인하는 것보다 더 우아하게 처리합니까?
( E_NOTICE
정의되지 않은 변수 외에 다른 메시지가 있지만 가장 혼란을 일으키는 메시지 인 것 같습니다.)
부록
지금까지의 답변에서, 나는 isset()
코드 팽창이 아니라고 생각하는 유일한 사람 이 아닙니다. 그래서 지금 궁금합니다. 다른 언어로 프로그래머에게 문제가 있습니까? 아니면 이것은 단지 PHP 문화 문제입니까?