In PHP ist Get_Defined_Constants () eine sehr praktische Funktion, die alle aktuell definierten Konstanten erhalten und ein mehrdimensionales Array zurückgeben kann, das normalerweise Konstanten unter mehreren Namespitzen enthält. Diese Konstanten sind in einer verschachtelten Array -Struktur organisiert. Um diese verschachtelten Strukturen zu durchqueren und die Werte jeder Konstante zu verarbeiten, ist Array_walk_recursive () ein sehr geeignetes Werkzeug.
In diesem Artikel wird erläutert, wie diese beiden Funktionen in Kombination, Extrahieren und Verarbeitung aller konstanten Werte verwendet werden und tatsächliche Codebeispiele angeben, um zu demonstrieren, wie konstante Werte formatieren oder mit bestimmten Wertenarten arbeiten.
Wenn die Funktion get_defined_constants () keine Parameter hat, lautet die Struktur wie folgt:
[
"Core" => [
"E_ERROR" => 1,
"E_WARNING" => 2,
...
],
"date" => [
"DATE_ATOM" => "Y-m-d\TH:i:sP",
...
],
...
]
Da dies ein mehrdimensionales Array ist, können wir nicht direkt auf jedem der Werte arbeiten, sondern rekursive Methoden verwenden.
array_walk_recursive () akzeptiert zwei Parameter:
Das Eingangsarray (muss mehrdimensional sein)
Rückruffunktion führt bestimmte Vorgänge für jeden Wert im Array aus
Grammatik:
array_walk_recursive(array &$array, callable $callback);
Hier ist ein Beispielcode, der zeigt, wie Sie Get_Defined_Constants () verwenden, um alle Konstanten zu erhalten und Array_WALK_RECURIVE () zu verwenden, um alle Werte durchzusetzen und zu verarbeiten.
<?php
$constants = get_defined_constants(true); // Holen Sie sich alle Konstanten,Nach Erweiterung klassifiziert
array_walk_recursive($constants, function($value, $key) {
// Angenommen, wir verarbeiten nur Stringkonstanten,Zum Beispiel einen Domänennamen ausgebenURL
if (is_string($value)) {
// Hier machen wir ein einfaches Urteil und ersetzen URL Der Domain -Name ist 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 {
// Sie können auch andere Arten von Konstanten ausgeben,Hier ist nur eine Demonstration
echo "$key => " . var_export($value, true) . "\n";
}
});
Wir verwenden Get_Defined_Constants (True), um eine Reihe von Konstanten mit einem erweiterten Namespace zu erhalten.
Verwenden Sie Array_walk_recursive , um alle Werte durchzusetzen.
Überprüfen Sie, ob es sich um einen String -Typ und eine URL handelt. Ersetzen Sie, wenn ja, den Domänennamenteil durch m66.net .
Schließlich wird der Name und der Wert jeder Konstante ausgegeben.
Debug -Tool : Zeigen Sie schnell alle definierten Konstanten und Werte an.
Sicherheitsprüfung : Überprüfen Sie, ob empfindliche konstante Werte ausgesetzt sind.
Migrationsinstrument : URL -Konstanten für eine bestimmte Umgebung zu einem neuen Domainnamen (z. B. auf M66.net ) umleiten oder weiterleiten.
Protokollierung : Ausgabe aller wichtigen konstanten Informationen während der Anwendungsinitialisierungsphase.
Durch Kombinieren von get_defined_constants () und array_walk_recursive () können wir alle definierten Konstanten problemlos durchqueren und verarbeiten, insbesondere für die Konfigurationsüberprüfung oder die Anpassung der Stapel in großen Projekten. Mit der Erkennung und dem Austausch von URLs können auch automatisierte Domänennamen -Migrations- oder Umleitungsrichtlinien implementiert werden. Diese Methode ist strukturiert und effizient und für eine Vielzahl von Szenarien geeignet.
Ich hoffe, dieser Artikel hilft Ihnen dabei, diese beiden Funktionen zu verstehen und anzuwenden.