get_defined_constants ()는 모든 정의 된 상수를 얻기 위해 PHP의 내장 기능입니다. 키가 상수 이름이고 값은 상수 값인 연관 배열을 반환합니다. 이는 런타임 환경을 디버깅, 반영 또는 분석 할 때 유용합니다. 그러나 다른 버전의 PHP 에서이 함수의 동작은 주로 다음 측면에 반영된 몇 가지 차이를 보여줄 수 있습니다.
PHP의 개발을 통해 특히 새로운 확장증을 추가하거나 기존 모듈을 리팩토링 한 후 새로운 코어 상수가 지속적으로 도입되고 있습니다. 예를 들어, PHP 7.X 및 PHP 8.X에서 오류 처리 메커니즘의 변화로 인해 많은 수의 새로운 E_* 오류 수준 상수가 도입되었습니다.
print_r(array_keys(get_defined_constants()));
PHP 5.6에서는 e_error | 와 같은 합병 상수가 표시되지 않을 수 있습니다. e_recoverable_error , 그러나 PHP 7 이후에는 그러한 결합 된 값에 대한 더 많은 정의가있을 것입니다.
php 5.3에서 시작하여 get_defined_constants ()는 부울 매개 변수 $를 지원하며, True 로 설정하면 상수가 확장자별로 분류됩니다.
print_r(get_defined_constants(true));
다른 PHP 버전에서는 다른 확장 모듈의 분류 이름이 변경 될 수 있습니다. 예를 들어:
PHP 7.2의 어레이는 코어 , PCRE , SPL , 날짜 , LIBXML , OpenSSL , CURL 등을 포함 할 수 있습니다.
PHP 8.0 후 도입 된 FFI , 나트륨 및 섬유 와 같은 출력 결과에 추가됩니다.
get_defined_constants () 의 결과에 특정 상수가 나타나든 php.ini 또는 컴파일 옵션과 같은 구성 파일의 영향을받을 수 있습니다. 예를 들어, Zend Opcache가 활성화되는지, 특정 확장 모듈이로드되는지 등.
define('MY_APP_VERSION', '1.0.0');
print_r(get_defined_constants());
이 출력은 종종 개발 서버와 생산 서버간에 일관성이 없기 때문에 사용하는 확장 및 구성 매개 변수가 다를 수 있기 때문입니다.
PHP 8은 JIT, 매치 표현식, 속성 등과 같은 구문 기능을 소개하고 그에 따라 새로운 상수를 제공합니다. get_defined_constants ()를 실행하면 php_fd_setsize , t_match , t_attribute 등과 같은 상수의 발생이 있습니다.
이러한 새로운 상수는 이전 버전에는 전혀 존재하지 않으므로 호환성이 높은 코드를 작성할 때 이러한 상수에 의존하는 경우 정의 된 () 함수를 사용하여 판단해야합니다.
드문 경우, 일부 정의 된 상수는 새 버전으로 변경되거나 폐기됩니다. PHP 팀은 일반적으로 뒤로 호환성을 보장하지만 주요 버전 업그레이드가 업그레이드 될 때 조정하는 것은 배제되지 않습니다. 예를 들어, 기본 시스템과 상호 작용하는 일부 확장자는 기본값을 변경하거나 C 라이브러리에 대한 업데이트에 의존하기 때문에 더 이상 지원되지 않는 특정 상수를 삭제할 수 있습니다.