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가 실행되면 일부 상수의 값이 비어 있습니다. 이 상황은 몇 가지 이유로 인해 발생할 수 있습니다.
상수는 올바르게 할당되지 않습니다 <br> 정의 될 때 상수는 즉시 값을 할당해야합니다. 정의 () 또는 const 문에 상수가 올바르게 제공되지 않거나 값이 빈 문자열 인 경우이 상수의 값은 get_defined_constants를 통해 얻을 때 비어있는 것으로 표시됩니다.
define("EMPTY_CONSTANT", "");
위의 코드는 빈 문자열로 상수 빈_Constant를 정의합니다. get_defined_constants 가 호출되면 출력이 표시됩니다.
[EMPTY_CONSTANT] =>
일정한 정의의 범위 <br> PHP에서 상수의 범위는 일반적으로 글로벌입니다. 그러나 특정 스코프 (예 : 내부 함수) 내에서 상수를 정의하면 get_defined_constants에 의해 반환되지 않을 수 있습니다.
function defineInsideFunction() {
define("FUNC_CONST", "Hello, World!");
}
defineInsideFunction();
print_r(get_defined_constants());
함수 내부의 상수를 정의하면 get_defined_constants 의 결과에 나타나지 않을 수 있습니다. 이 문제를 피하려면 상수의 정의가 전역 범위에서 수행되는지 확인하십시오.
조건부 상수 정의 <br> 상수의 정의가 일부 조건부 진술로 래핑되고 조건이 충족되지 않으면 상수는 정의되지 않습니다. 따라서 get_defined_constants를 통해 가져 오면 이러한 상수가 표시되지 않을 수 있습니다.
if (false) {
define("CONDITION_CONST", "This will not be defined");
}
이 경우 조건부 판단이 실패하고 상수가 정의되지 않기 때문에 get_defined_constants 의 결과에는 조건_const가 나타나지 않습니다.
사전 정의 된 상수가 누락되었습니다
PHP 자체는 PHP_VERSION , PHP_OS 등과 같은 런타임시 미리 정의 된 상수를 정의하지만 사용자 정의 환경 구성과 같은 일부 특별한 경우 PHP는 사전 정의 된 상수를로드하지 않을 수 있으므로 표시되지 않을 수 있습니다.
일부 특정 환경에서는 특정 상수가 환경에 따라 다를 수 있습니다. 특정 구성에서 사전 정의 된 상수가 비어있는 경우 PHP 구성 또는 실행중인 환경을 확인해야 할 수도 있습니다.
널 값이 표시되는 상수를 피하려면 상수를 정의하고 있는지 확인하십시오.
정의 할 때 상수가 유효한 값을 가지고 있고 빈 문자열이 아닌지 확인하십시오.
상수의 정의가 전 세계적으로 수행되고 국부 범위 내에서만 정의되지 않도록하십시오.
조건부 명세서에서 상수를 정의 할 때, 조건이 항상 유지되도록하거나 일정한 정의 전에 조건부 판단을해야합니다.
사전 정의 된 상수가 없으면 PHP 환경 구성을 확인하여 관련 상수가 런타임에 올바르게로드되는지 확인하십시오.