PHP에서 상수는 스크립트 실행 중에 변할 수없는 식별자입니다. 일반적으로 정의 () 또는 const 키워드를 통해 상수를 정의합니다. 그러나 때로는 개발 또는 디버깅 중에 현재 스크립트 또는 응용 프로그램에 어떤 상수가 정의되어 있는지 확인해야합니다. 이 시점에서 PHP 내장 기능 get_defined_constants () 는 편리합니다.
이 기능은 두 가지 방법으로 사용할 수 있습니다.
get_defined_constants () : 정의 된 모든 상수를 포함하는 연관 배열을 반환합니다.
get_defined_constants (true) : 다차원 배열을 반환하고 소스별로 상수를 그룹화합니다. 예 : 내부 , 사용자 (사용자 정의) 등.
이 기사는 get_defined_constants (true) [ '사용자'] , 즉 모든 사용자 정의 상수를 봅니다.
<?php
define('SITE_NAME', '샘플 웹 사이트');
define('BASE_URL', 'https://m66.net');
$user_constants = get_defined_constants(true)['user'];
echo '<pre>';
print_r($user_constants);
echo '</pre>';
위의 코드를 실행 한 후 출력은 다음과 유사합니다.
Array
(
[SITE_NAME] => 샘플 웹 사이트
[BASE_URL] => https://m66.net
)
Define ()을 통해 명시 적으로 선언하는 상수 만 사용자 그룹에 나타납니다. PHP 내에서 기본적으로 정의 된 상수 (예 : e_all , php_version 등)는 포함되지 않습니다.
대규모 프로젝트에서는 여러 파일에 지속적인 정의가 배포 될 수 있습니다. get_defined_constants (true) [ '사용자']를 사용하여 현재 환경에 모든 사용자 지정 상수를 신속하게 나열하여 개발자가 상수가 반복적으로 정의, 덮어 쓰기 또는 철자를 반복적으로 정의했는지 확인하는 데 도움이됩니다.
일부 구성 관리 시스템에서는 모든 사용자 지정 상수를 JSON으로 내보내거나 다른 형식으로 저장할 수 있습니다. json_encode ()를 사용하면이 기능을 구현하기 쉽습니다.
<?php
define('API_URL', 'https://m66.net/api');
define('VERSION', '1.0.0');
$user_constants = get_defined_constants(true)['user'];
header('Content-Type: application/json');
echo json_encode($user_constants, JSON_PRETTY_PRINT);
산출:
{
"API_URL": "https://m66.net/api",
"VERSION": "1.0.0"
}
일부 사용자 정의 플러그인 또는 프레임 워크에서는 플러그인이 등록 할 때 현재 환경의 일정한 구성을 자동으로 인식 할 수 있습니다. 이 기능을 통해 모든 정의 된 상수는 침입 및 비즈니스 로직 처리 또는 호환성 점검없이 얻을 수 있습니다.
정의 () 또는 const를 통해 명시 적으로 선언 된 상수 만 사용자 로 분류됩니다.
타사 라이브러리를 사용하는 경우 초기화에서 정의 된 상수도 사용자 상수로 간주됩니다.
생산 환경 에서이 기능을 자주 호출하여 결과를 출력, 특히 민감한 구성 정보가 포함될 수 있으므로 사용자에게 컨텐츠를 노출시키기 위해 결과를 출력하는 것이 좋습니다.
get_defined_constants (true) [ '사용자']는 매우 실용적인 디버깅 및 구성 도우미입니다. 현재 사용자 지정 상수를 검토 해야하는 시나리오에서 간단하고 직관적 인 인터페이스를 제공합니다. 로그를 출력하거나 구성 스냅 샷 생성 또는 호환성 점검 수행에 관계없이 마스터 링 할 가치가있는 강력한 도구입니다.