현재 위치: > 최신 기사 목록> 왜 일부 상수가 널 값으로 나타나는가?

왜 일부 상수가 널 값으로 나타나는가?

M66 2025-05-22

get_defined_constants 함수는 정의 된 모든 상수와 해당 값을 포함하는 배열을 반환합니다. const는 define () 또는 const 키워드에 의해 정의되며 스크립트 전체에서 변할 수 없습니다.

예를 들어, 다음 코드는 상수를 정의하고 get_defined_constants를 사용하여 정의 된 상수를 보는 방법을 보여줍니다.

 define("SITE_URL", "https://m66.net");
define("SITE_NAME", "M66");

$constants = get_defined_constants();
print_r($constants);

출력은 다음과 유사합니다.

 Array
(
    [SITE_URL] => https://m66.net
    [SITE_NAME] => M66
    ...
)

이런 식으로, 당신은 모든 정의 된 상수와 그 값을 볼 수 있습니다.

왜 일부 상수가 널 값으로 나타나는가?

때로는 gette_defined_constants가 실행되면 일부 상수의 값이 비어 있습니다. 이 상황은 몇 가지 이유로 인해 발생할 수 있습니다.

  1. 상수는 올바르게 할당되지 않습니다 <br> 정의 될 때 상수는 즉시 값을 할당해야합니다. 정의 () 또는 const 문에 상수가 올바르게 제공되지 않거나 값이 빈 문자열 인 경우이 상수의 값은 get_defined_constants를 통해 얻을 때 비어있는 것으로 표시됩니다.

     define("EMPTY_CONSTANT", "");
    

    위의 코드는 빈 문자열로 상수 빈_Constant를 정의합니다. get_defined_constants 가 호출되면 출력이 표시됩니다.

     [EMPTY_CONSTANT] => 
    
  2. 일정한 정의의 범위 <br> PHP에서 상수의 범위는 일반적으로 글로벌입니다. 그러나 특정 스코프 (예 : 내부 함수) 내에서 상수를 정의하면 get_defined_constants에 의해 반환되지 않을 수 있습니다.

     function defineInsideFunction() {
        define("FUNC_CONST", "Hello, World!");
    }
    
    defineInsideFunction();
    print_r(get_defined_constants());
    

    함수 내부의 상수를 정의하면 get_defined_constants 의 결과에 나타나지 않을 수 있습니다. 이 문제를 피하려면 상수의 정의가 전역 범위에서 수행되는지 확인하십시오.

  3. 조건부 상수 정의 <br> 상수의 정의가 일부 조건부 진술로 래핑되고 조건이 충족되지 않으면 상수는 정의되지 않습니다. 따라서 get_defined_constants를 통해 가져 오면 이러한 상수가 표시되지 않을 수 있습니다.

     if (false) {
        define("CONDITION_CONST", "This will not be defined");
    }
    

    이 경우 조건부 판단이 실패하고 상수가 정의되지 않기 때문에 get_defined_constants 의 결과에는 조건_const가 나타나지 않습니다.

  4. 사전 정의 된 상수가 누락되었습니다
    PHP 자체는 PHP_VERSION , PHP_OS 등과 같은 런타임시 미리 정의 된 상수를 정의하지만 사용자 정의 환경 구성과 같은 일부 특별한 경우 PHP는 사전 정의 된 상수를로드하지 않을 수 있으므로 표시되지 않을 수 있습니다.

    일부 특정 환경에서는 특정 상수가 환경에 따라 다를 수 있습니다. 특정 구성에서 사전 정의 된 상수가 비어있는 경우 PHP 구성 또는 실행중인 환경을 확인해야 할 수도 있습니다.

상수가 무인 상태 인 상황을 피하는 방법은 무엇입니까?

널 값이 표시되는 상수를 피하려면 상수를 정의하고 있는지 확인하십시오.

  1. 정의 할 때 상수가 유효한 값을 가지고 있고 빈 문자열이 아닌지 확인하십시오.

  2. 상수의 정의가 전 세계적으로 수행되고 국부 범위 내에서만 정의되지 않도록하십시오.

  3. 조건부 명세서에서 상수를 정의 할 때, 조건이 항상 유지되도록하거나 일정한 정의 전에 조건부 판단을해야합니다.

  4. 사전 정의 된 상수가 없으면 PHP 환경 구성을 확인하여 관련 상수가 런타임에 올바르게로드되는지 확인하십시오.