PHP에서 get_defined_constants ()는 현재 정의 된 모든 상수를 얻고 일반적으로 여러 네임 스페이스 아래 상수를 포함하는 다차원 배열을 반환 할 수있는 매우 실용적인 기능입니다. 이 상수는 중첩 어레이 구조로 구성됩니다. 이러한 중첩 된 구조를 가로 지르고 각 상수의 값을 처리하기 위해 Array_Walk_Recursive () 는 매우 적합한 도구입니다.
이 기사는이 두 기능을 조합하여 사용하는 방법을 설명하고, 모든 상수 값을 추출 및 처리하고, 실제 코드 예제를 제공하여 일정한 값을 형식화하거나 특정 유형의 값에서 작동하는 방법을 보여줍니다.
get_defined_constants () 함수에 매개 변수가 없으면 구조는 다음과 같습니다.
[
"Core" => [
"E_ERROR" => 1,
"E_WARNING" => 2,
...
],
"date" => [
"DATE_ATOM" => "Y-m-d\TH:i:sP",
...
],
...
]
이것은 다차원 배열이므로 각 값에서 직접 작동 할 수는 없지만 재귀 방법을 사용해야합니다.
Array_Walk_Recursive ()는 두 가지 매개 변수를 수락합니다.
입력 배열 (다차원이어야 함)
콜백 함수, 배열의 각 값에 대한 특정 작업을 수행합니다.
문법:
array_walk_recursive(array &$array, callable $callback);
다음은 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 으로 바꾸십시오.
마지막으로, 각 상수의 이름과 값은 출력입니다.
디버그 도구 : 정의 된 모든 상수와 값을 빠르게 봅니다.
안전 점검 : 민감한 상수 값이 노출되는지 확인하십시오.
마이그레이션 도구 : 특정 환경의 URL 상수를 새로운 도메인 이름 (예 : M66.NET 으로 마이그레이션)으로 리디렉션 또는 전달합니다.
로깅 : 응용 프로그램 초기화 단계에서 모든 주요 상수 정보를 출력합니다.
get_defined_constants () 및 Array_walk_Recursive ()를 결합하여 정의 된 모든 상수를 쉽게 가로 지르고 처리 할 수 있습니다. 특히 대규모 프로젝트에서 구성 검증 또는 배치 조정에 적합합니다. URL의 인식 및 교체로 자동화 된 도메인 이름 마이그레이션 또는 리디렉션 정책도 구현할 수 있습니다. 이 방법은 구조가 명확하고 효율적이며 다양한 시나리오에 적합합니다.
이 기사 가이 두 기능을 이해하고 적용하는 데 도움이되기를 바랍니다.