2012-06-27 4 views
3

PHP가 switch 문을 처리하는 방법에 관한 간단한 질문.PHP : 정의되지 않은 상수가있는 switch 문

나는이 여전히 APPLICATION_ENVIRONMENT 어디서나 정의되지 않은 경우 기본값으로 평가하는 것이다 다음 코드

switch (APPLICATION_ENVIRONMENT) { 
    case 'production': 
     echo 'production'; 
     break; 
    case 'stage': 
     echo 'stage'; 
     break; 
    default: //dev 
     echo 'dev'; 
} 

이 있다면? 아니면 오류가 발생합니까? 실행중인 응용 프로그램의 기존 소스를 보면 이전에이 작업을 수행 한 사람이 상수에 if (defined())를 먼저 수행하여 스위치가 있는지 여부를 확인하면됩니다.

감사합니다 DJ

답변

1

은 정의되지 않은 경우, APPLICATION_ENVIRONMENT 문자열 "APPLICATION_ENVIRONMENT"으로 PHP에 의해 해석 될 것이다, 그래서 "APPLICATION_ENVIRONMENT"이 정의 된 스위치의 경우 중 하나가 아닌 문자열 때문에 기본값으로 통해 떨어질 것입니다.

echo APPLICATION_ENVIRONMENT; 

PHP 공지 : 정의되지 않은 상수 신청의 사용은 - 라인에서의 PHP 쉘 코드 'APPLICATION_ENVIRONMENT'을 가정 한

PHP가에 대한 정의되지 않은 상수를 발견하고 때 통지를 발행합니다 좋건 나쁘 든간에 문자열로 인용하려는 가정하에 처리합니다.

3

스위치를 평가하지만 오류가 발생합니다.

대신을 시도해보십시오 APPLICATION_ENVIRONMENT이 코드에서 정의되지

$env = defined('APPLICATION_ENVIRONMENT') ? APPLICATION_ENVIRONMENT : null; 

switch($env) { 
    .. 
} 
0

경우, 단순히 문자열 및 인쇄 기본 스위치 값 역할을합니다.

switch 문에는 변수가 필요합니다. 심지어 APPLICATION_ENVIRONMENT 코드를 대신 switch(APPLICATION_ENVIRONMENT){..cases}

대신 사용하는 것으로 정의했습니다.