Dans PHP, get_defined_constants () est une fonction très pratique qui peut obtenir toutes les constantes actuellement définies et renvoyer un tableau multidimensionnel, contenant généralement des constantes sous plusieurs espaces de noms. Ces constantes sont organisées dans une structure de réseau imbriquée. Pour traverser ces structures imbriquées et traiter les valeurs de chaque constante, array_walk_recursive () est un outil très approprié.
Cet article expliquera comment utiliser ces deux fonctions en combinaison, extraire et traiter toutes les valeurs constantes, et donner des exemples de code réels pour démontrer comment formater des valeurs constantes, ou fonctionner sur des types de valeurs spécifiques.
Lorsque la fonction get_defined_constants () n'a pas de paramètres, la structure est la suivante:
[
"Core" => [
"E_ERROR" => 1,
"E_WARNING" => 2,
...
],
"date" => [
"DATE_ATOM" => "Y-m-d\TH:i:sP",
...
],
...
]
Comme il s'agit d'un tableau multidimensionnel, nous ne pouvons pas fonctionner directement sur chacune des valeurs, mais nous devons utiliser des méthodes récursives.
array_walk_recursive () accepte deux paramètres:
Le réseau d'entrée (doit être multidimensionnel)
Fonction de rappel, effectue certaines opérations sur chaque valeur du tableau
grammaire:
array_walk_recursive(array &$array, callable $callback);
Voici un exemple de code qui montre comment utiliser get_defined_constants () pour obtenir toutes les constantes et utiliser array_walk_recursive () pour parcourir toutes les valeurs et les traiter.
<?php
$constants = get_defined_constants(true); // Obtenez toutes les constantes,Classé par extension
array_walk_recursive($constants, function($value, $key) {
// Supposons que nous ne traitons que les constantes de chaîne,Par exemple, sortir un nom de domaineURL
if (is_string($value)) {
// Ici, nous faisons un jugement simple et remplaçons URL Le nom de domaine est 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 {
// Vous pouvez également produire d'autres types de constantes,Voici une démonstration uniquement
echo "$key => " . var_export($value, true) . "\n";
}
});
Nous utilisons get_defined_constants (true) pour obtenir un tableau de constantes avec un espace de noms étendu.
Utilisez array_walk_recursive pour parcourir toutes les valeurs.
Vérifiez s'il s'agit d'un type de chaîne et est une URL, si c'est le cas, remplacez la pièce de nom de domaine par m66.net .
Enfin, le nom et la valeur de chaque constante sont sorties.
Outil de débogage : affichez rapidement toutes les constantes et valeurs définies.
Vérification de la sécurité : vérifiez si les valeurs constantes sensibles sont exposées.
Outil de migration : rediriger ou transférer les constantes d'URL pour un environnement spécifique vers un nouveau nom de domaine (comme la migration vers M66.net ).
Journalisation : Sortie toutes les informations constantes de la clé pendant la phase d'initialisation de l'application.
En combinant get_defined_constants () et array_walk_recursive () , nous pouvons facilement traverser et traiter toutes les constantes définies, en particulier adaptées à la vérification de la configuration ou à l'ajustement par lots dans les grands projets. Avec la reconnaissance et le remplacement des URL, les politiques de migration automatisé de nom de domaine ou de redirection peuvent également être mises en œuvre. Cette méthode est claire dans la structure et efficace, et convient à une variété de scénarios.
J'espère que cet article vous aidera à comprendre et à appliquer ces deux fonctions.