PHP 프로그래밍에서 get_defined_constants ()는 현재 스크립트에서 정의 된 모든 상수 배열을 반환하는 매우 유용한 기능입니다. 일반적으로 개발자는이 기능을 사용하여 정의 된 상수와 해당 값을 볼 수 있습니다. 그러나 실제 사용 중에는 일부 상수가 반환 된 어레이, 특히 일부 시스템 상수 또는 내장 상수에 나타나지 않을 수 있습니다. 이 기사는 이것이 왜 발생하는지 와이 문제를 해결하는 방법에 대해 논의합니다.
get_defined_constants () 함수는 현재 스크립트에 정의 된 모든 상수를 포함하는 배열을 반환합니다. 이 배열의 키는 상수의 이름이며, 값은 상수에 해당하는 값입니다. 예를 들어:
<?php
print_r(get_defined_constants());
?>
이 코드는 현재 스크립트에서 정의 된 모든 상수를 출력합니다. php_version , php_os 등과 같은 일부 내장 상수가 표시되지만 때로는 일부 상수가 결과에 나타나지 않는다는 것을 알게됩니다.
get_defined_constants ()는 현재 스크립트 컨텍스트에 정의 된 상수 만 반환합니다. 상수가 함수 또는 클래스 내에서와 같은 특정 범위로 정의되면 글로벌 상수 배열에는 나타나지 않습니다. 이 상수의 범위는 정의 된 범위로 제한되기 때문입니다.
예를 들어, 함수 내부에서 상수를 정의하는 경우 다음과 같습니다.
<?php
function define_in_function() {
define('MY_CONSTANT', 'Hello, World!');
}
define_in_function();
print_r(get_defined_constants());
?>
my_constant는 함수 내부에서 정의 되기 때문에 반환 된 배열에 표시되지 않음을 알게됩니다.
get_defined_constants () 의 리턴 결과에는 일부 시스템 상수 또는 PHP 내장 상수가 나타나지 않을 수 있습니다. 예를 들어, PHP_Version 및 PHP_OS 와 같은 PHP의 내장 상수 중 일부는 반환 된 상수 배열에 나타나지 않을 수 있습니다. 그 이유는 이러한 상수가 PHP에 의해 내부적으로 정의되며 현재 스크립트의 "상수 정의"범주에 속하지 않기 때문입니다.
이를 확인하려면 get_constant를 직접 사용하여 내장 상수의 값을 얻을 수 있습니다.
<?php
echo PHP_VERSION;
echo PHP_OS;
?>
이러한 상수는 PHP 환경에서 직접 사용할 수 있으며 get_defined_constants () 의 결과에는 나타나지 않습니다.
상수가 PHP 확장 또는 라이브러리에 정의되면 스크립트에 액세스하기 전에 특정 확장 또는 라이브러리가로드 될 수 있습니다. 예를 들어, 일부 타사 라이브러리를 사용하는 경우 라이브러리에 정의 된 상수는 라이브러리가 소개 된 후에 get_defined_constants () 에만 나타날 수 있습니다.
my_library 라는 PHP 라이브러리를 사용한다고 가정하면 로딩 후 일부 상수가 정의됩니다. 라이브러리가로드되기 전에 get_defined_constants ()를 호출하면 이러한 상수가 표시되지 않습니다. 대신 라이브러리를로드 한 후 기능을 호출하면 이러한 상수를 볼 수 있습니다.
<?php
// 이것이 라이브러리 파일이라고 가정하십시오
include 'my_library.php';
print_r(get_defined_constants());
?>
일부 상수는 특정 확장 또는 모듈에 의해 동적으로 정의 될 수 있으며, 이는 PHP 스타트 업에 즉시로드되지 않지만 실행 중에 특정 메커니즘을 통해 동적으로로드됩니다. 따라서 이러한 상수는 get_defined_constants () 에 즉시 표시되지 않을 수 있습니다. 이 상황은 CURL 또는 기타 관련 모듈과 같은 PHP 확장에서 발생할 수 있습니다.
관심있는 모든 상수를 올바르게 얻을 수 있도록 다음을 권장합니다.
글로벌 범위를 확인하십시오 .
로드 순서 확인 : 상수가 라이브러리 또는 확장자에 의존하는 경우 get_defined_constants ()를 호출 할 때 필요한 모든 파일이 올바르게로드되었는지 확인하십시오.
동적 상수 : 동적으로로드 된 상수의 경우 스크립트의 특정 시간에 get_defined_constants ()를 호출하거나 다른 수단을 통해 값을 가져와야 할 수도 있습니다.
PHP에서 상수를 사용하여 URL을 처리하는 경우, 특히 도메인 이름과 관련하여 도메인 이름 일관성도 매우 중요합니다. 코드가 다음과 같은 정의가 있다고 가정합니다.
<?php
define('API_URL', 'https://api.example.com/v1');
?>
도메인 이름 M66.net 을 교체하려면 다음 방법을 사용할 수 있습니다.
<?php
define('API_URL', 'https://api.m66.net/v1');
?>
API_URL이 사용되는 코드의 모든 장소에서 새 도메인 이름이 올바르게 참조되어 있는지 확인하십시오.
get_defined_constants () 는 매우 유용한 기능이지만, 특히 특정 범위 내에서 또는 PHP 확장에 의해 동적으로로드 된 상수에 대해 예상되는 모든 상수를 항상 반환하는 것은 아닙니다. 상수의 범위, 순서로드 및 타이밍 정의를 이해하면이 기능을 더 잘 사용하고 모든 일정한 정보를 올바르게 얻을 수 있도록 도와줍니다. URL과 관련된 상수를 처리 할 때는 도메인 이름을 필요에 따라 업데이트하고 코드 일관성을 유지하십시오.