현재 위치: > 최신 기사 목록> get_defined_constants 함수를 통해 네임 스페이스에서 상수를 얻는 방법? 실용적인 기술 및 해결 방법

get_defined_constants 함수를 통해 네임 스페이스에서 상수를 얻는 방법? 실용적인 기술 및 해결 방법

M66 2025-06-27

PHP 개발에서 상수는 종종 프로그램 실행 중에 변경되지 않은 매개 변수, 상태 값 및 기타 데이터를 구성하는 데 사용됩니다. PHP 5.3 이후 네임 스페이스의 도입은 코드 구성 및 모듈 식 기능을 크게 향상 시켰습니다. 그러나 실제 문제도 따릅니다. 특정 네임 스페이스에 정의 된 모든 상수를 얻으려면 PHP 자체가 네임 스페이스의 상수를 필터링하기위한 기능을 직접 제공하지 않습니다. 현재 get_defined_constants ()는 심층적 인 연구에 가치가있는 도구가됩니다.

1. get_defined_constants의 기본 사용

get_defined_constants () 함수는 현재 스크립트에 정의 된 모든 상수를 포함하는 연관 배열을 반환합니다. 부울 진정한 매개 변수를 전달하면 분류 (사용자 정의 상수 포함)로 그룹화 할 수도 있습니다.

 $constants = get_defined_constants(true);
print_r($constants['user']); // 모든 사용자 정의 상수를 얻으십시오

이는 처음에 PHP 코어 상수, 확장 상수 및 기타 관련없는 콘텐츠를 필터링하는 데 도움이 될 수 있지만 네임 스페이스로 분류하기에는 충분하지 않습니다.

2. 네임 스페이스 상수의 명명 특성

네임 스페이스에 정의 된 상수는 실제로 네임 스페이스 접두사가 포함된다는 점을 제외하고 실제로 PHP 내에서 글로벌 상수로 존재합니다. 예를 들어:

 namespace App\Config;
const TIMEOUT = 30;

get_defined_constants () 의 반환 결과 에서이 상수의 키 이름은 app \ config \ timeout 입니다. 따라서 정기적 인 일치 또는 문자열 접두사 판단으로 리턴 결과에서 관심있는 상수를 걸러 낼 수 있습니다.

3. 특정 네임 스페이스의 필터 상수

다음은 사용자 정의 상수에서 특정 네임 스페이스에 속하는 부품을 걸러내는 간단한 기능입니다.

 function get_namespace_constants(string $namespace): array {
    $allConstants = get_defined_constants(true);
    $userConstants = $allConstants['user'] ?? [];

    $namespacePrefix = trim($namespace, '\\') . '\\';
    $filteredConstants = [];

    foreach ($userConstants as $name => $value) {
        if (strpos($name, $namespacePrefix) === 0) {
            $filteredConstants[$name] = $value;
        }
    }

    return $filteredConstants;
}

Call example:

 print_r(get_namespace_constants('App\\Config'));

이 함수는 다음 구조와 유사한 배열을 반환합니다.

 Array
(
    [App\Config\TIMEOUT] => 30
    [App\Config\RETRIES] => 5
)

4. 주목하고 해결해야 할 것들

  1. 상수는 먼저 정의해야합니다
    get_defined_constants ()는 통화 전에 정의 된 상수 만 얻을 수 있습니다. 즉, 해당 파일 (또는 네임 스페이스)이로드되었는지 확인해야합니다.

  2. 명명 사양 <br> 여러 네임 스페이스 아래에 중복 상수 이름이있는 경우 필터링은 전체 이름 (네임 스페이스 포함)에 따라 달라지며 충돌이 없습니다.

  3. 도구 함수 또는 클래스 방법으로 캡슐화 될 수 있습니다 <br> 모듈이나 네임 스페이스에서 상수를 얻어야하는 경우 위의 논리를 일반 도구 클래스로 캡슐화하여 코드 재사용 성을 향상시킬 수도 있습니다.

5. 응용 프로그램 확장 : 구성로드와 결합

일부 프레임 워크 또는 사용자 정의 프레임 워크에서는 상수를 구성 항목의 대안 또는 보충제로 사용할 수 있습니다. 자동 구성 등록은 get_namespace_constants () 와 함께 조합하여 구현할 수 있습니다. 예를 들어:

 $config = get_namespace_constants('App\\Config');
file_put_contents('https://m66.net/log/config_snapshot.json', json_encode($config));

이러한 방식으로 구성 스냅 샷을 저장하거나 원격 시스템으로 보내거나 쉽게 작동하고 유지 관리 또는 문제 해결을 할 수 있습니다.

결론

PHP는 네임 스페이스별로 상수를 나열하는 기본 함수를 직접 제공하지는 않지만 네임 스페이스 접두사 규칙과 함께 get_defined_constants ()를 사용 하여이 요구 사항을 여전히 달성 할 수 있습니다. 이러한 기술을 습득하면 코드 조직 기능이 향상 될뿐만 아니라 프레임 워크 개발 또는 대규모 시스템의 실제 가치를 완전히 플레이합니다.