2012-08-01 7 views
5
<?php 
// $smith = ""; 
    $submit ="button_a"; 

    if($submit == "button_a") { 
     $smith = "button_a"; 
    } 
    elseif($submit == "button_b"){ 
     $smith = "button_b"; 
    } 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
</head> 
<body> 

<p> 
    <?php echo($smith); ?> 
</p> 

</body> 
</html> 

PHPSTORM은 각 파일에 대해 빨간색 - 오류, 황색 - 경고, 녹색 - 확인 플래그를 제공합니다.phpstorm 경고 PHP 변수가 정의되지 않았을 수 있습니다.

헤더 위의 PHP는 $ smith에 값을 할당합니다. 시체에서, 나는 $ smith에 대해 그것이 정의되지 않았다고 말하는 경고를 받는다. 모든 변수를 PHP 코드 상단에 선언하면 ($ smith = "";) 행복합니다 (경고 없음).

이러한 경고를 방지하기 위해해야 ​​할 일이 있습니까?

나는 의견을 말하지 않기 위해 각자에게 의견을 붙이는 아이디어가 마음에 들지 않습니다. 나는 그것을 모두 끄고 싶지 않습니다.

4 개 또는 5 개의 변수를 정의하는 db_login.php 파일을 포함 시키면 많이 발생합니다. WAMP, MAMP 및 실제 호스에 대해 다른 db_login.php 파일이 있습니다.

의견이 있으십니까?

+2

File > Settings (Ctrl+Alt+S) > Project Settings > Inspections > PHP > Undefined > Undefined variable에 ... 그래서 더 쉽게 디버깅을합니다. – Brian

+0

... 설정에 전역 변수를 사용하지 마십시오 (예 : db 세부 정보 - 도움말의 정적 클래스) - 자신의 코드 인 경우 : – LazyOne

답변

6

네,이 경고를 없애기 위해 할 수있는 두 가지 방법이 있습니다. 당신은 말 :이 설정되어있는 경우 당신이 그것을 인쇄 할 때

$smith = ""; 
if($submit == "button_a") { 
    $smith = "button_a"; 
} 
elseif($submit == "button_b"){ 
    $smith = "button_b"; 
} 

또는 확인 :

<?php 
    if(isset($smith)) { 
     echo($smith); 
    } 
?> 

그러나 이것은 단지 경고이며, 당신이 그 조건이 있음을 알려됩니다 $smith원 ($submit"button_a"이 아니고 "button_b"이 아닌 경우) 정의해야합니다. 해당 조건이 발생하면 $smith이 설정되지 않았을 때 인쇄 할 수 있습니다. 이는 스크립트의 버그 일 수 있습니다.

+1

PHPSTORM은 내가 생각했던 것보다 똑똑합니다. 코드를 통해 모든 경로가 값을 할당하도록 elseif를 else로 변경하면 행복합니다. 데이터베이스, 사용자, 암호, 테이블 등을 정의하는 db_login 포함 파일은 무엇입니까? 포함 파일을 "조사하여"모두 미리 정의하지 않아도되는 방법은 무엇입니까? – mkstlwtz

+0

왜냐하면'$ smith'가 정의되지 않는 조건이 존재하기 때문입니다. 실제로 정의되지 않은 변수에 액세스 할 수있는 조건이 존재한다는 것을 알려주므로 실제로 도움이됩니다 (IMO). "버그"조건 (즉,'$ submit'이'button_a' 또는'button_b'가 아닌 곳)으로 스크립트를 실행 한 경우에만 PHP에서이 정보를 얻을 수 있습니다. 포함 파일 문제는 아래 Dreen의 대답을 참조하십시오. – nickb

14

require on include 문이 변수 액세스 이전에 동일한 실행 흐름에 있으면 정의되지 않은 변수 보고서를 무시하도록 PHPStorm에 지시 할 수 있습니다. 에서 '정의되지 않은 변수'- '포함'및 '요구'문을 무시하십시오.. 기본적으로 사용하도록 설정되어 있으므로 사용하지 않도록 설정해야합니다.

enter image description here

참고 :이 설정은 내가 철저하게 항상/선언 어떤 사용하기 전에 변수를 초기화하는 그래도 추천 할 것입니다

+0

그게 완벽합니다. 고맙습니다. – mkstlwtz

+3

이 설정은 어디에 있습니까? – bafromca

+1

파일> 설정 (Ctrl + Alt + S)> 프로젝트 설정> 검사> PHP> 정의되지 않음> 정의되지 않은 변수 – Kobra

관련 문제