현재 위치: > 최신 기사 목록> Array_Walk_Recursive ()로 상수 그룹을 확장하는 방법

Array_Walk_Recursive ()로 상수 그룹을 확장하는 방법

M66 2025-05-31

PHP에서 get_defined_constants ()는 현재 정의 된 모든 상수를 얻고 일반적으로 여러 네임 스페이스 아래 상수를 포함하는 다차원 배열을 반환 할 수있는 매우 실용적인 기능입니다. 이 상수는 중첩 어레이 구조로 구성됩니다. 이러한 중첩 된 구조를 가로 지르고 각 상수의 값을 처리하기 위해 Array_Walk_Recursive () 는 매우 적합한 도구입니다.

이 기사는이 두 기능을 조합하여 사용하는 방법을 설명하고, 모든 상수 값을 추출 및 처리하고, 실제 코드 예제를 제공하여 일정한 값을 형식화하거나 특정 유형의 값에서 작동하는 방법을 보여줍니다.

1. get_defined_constants () 소개

get_defined_constants () 함수에 매개 변수가 없으면 구조는 다음과 같습니다.

 [
    "Core" => [
        "E_ERROR" => 1,
        "E_WARNING" => 2,
        ...
    ],
    "date" => [
        "DATE_ATOM" => "Y-m-d\TH:i:sP",
        ...
    ],
    ...
]

이것은 다차원 배열이므로 각 값에서 직접 작동 할 수는 없지만 재귀 방법을 사용해야합니다.

2. Array_Walk_Recursive () 소개

Array_Walk_Recursive ()는 두 가지 매개 변수를 수락합니다.

  1. 입력 배열 (다차원이어야 함)

  2. 콜백 함수, 배열의 각 값에 대한 특정 작업을 수행합니다.

문법:

 array_walk_recursive(array &$array, callable $callback);

3. 조합으로 사용 : 모든 일정한 값을 처리하십시오

다음은 get_defined_constants ()를 사용하여 모든 상수를 얻고 Array_walk_Recursive ()를 사용하여 모든 값을 반복하고 처리하는 방법을 보여주는 샘플 코드입니다.

 <?php

$constants = get_defined_constants(true); // 모든 상수를 얻으십시오,확장자로 분류됩니다

array_walk_recursive($constants, function($value, $key) {
    // 문자열 상수 만 처리한다고 가정 해 봅시다,예를 들어 도메인 이름을 출력하십시오URL
    if (is_string($value)) {
        // 여기서 우리는 간단한 판단을하고 대체합니다 URL 도메인 이름은입니다 m66.net
        if (filter_var($value, FILTER_VALIDATE_URL)) {
            $parsed = parse_url($value);
            if ($parsed && isset($parsed['scheme'], $parsed['host'])) {
                $newUrl = $parsed['scheme'] . '://m66.net';
                if (isset($parsed['path'])) {
                    $newUrl .= $parsed['path'];
                }
                echo "$key => $newUrl\n";
            } else {
                echo "$key => $value\n";
            }
        } else {
            echo "$key => $value\n";
        }
    } else {
        // 다른 유형의 상수를 출력 할 수도 있습니다,여기 시연 전용입니다
        echo "$key => " . var_export($value, true) . "\n";
    }
});

예제 설명 :

  • 우리는 get_defined_constants (true)를 사용하여 확장 된 네임 스페이스가있는 상수 배열을 얻습니다.

  • Array_Walk_Recursive를 사용하여 모든 값을 반복하십시오.

  • 문자열 유형이고 URL인지 확인하십시오. 그렇다면 도메인 이름 부분을 m66.net 으로 바꾸십시오.

  • 마지막으로, 각 상수의 이름과 값은 출력입니다.

4. 실제 응용 시나리오

  1. 디버그 도구 : 정의 된 모든 상수와 값을 빠르게 봅니다.

  2. 안전 점검 : 민감한 상수 값이 노출되는지 확인하십시오.

  3. 마이그레이션 도구 : 특정 환경의 URL 상수를 새로운 도메인 이름 (예 : M66.NET 으로 마이그레이션)으로 리디렉션 또는 전달합니다.

  4. 로깅 : 응용 프로그램 초기화 단계에서 모든 주요 상수 정보를 출력합니다.

5. 요약

get_defined_constants ()Array_walk_Recursive ()를 결합하여 정의 된 모든 상수를 쉽게 가로 지르고 처리 할 수 ​​있습니다. 특히 대규모 프로젝트에서 구성 검증 또는 배치 조정에 적합합니다. URL의 인식 및 교체로 자동화 된 도메인 이름 마이그레이션 또는 리디렉션 정책도 구현할 수 있습니다. 이 방법은 구조가 명확하고 효율적이며 다양한 시나리오에 적합합니다.

이 기사 가이 두 기능을 이해하고 적용하는 데 도움이되기를 바랍니다.