Position actuelle: Accueil> Derniers articles> Comment développer un groupe constant avec array_walk_recursive ()

Comment développer un groupe constant avec array_walk_recursive ()

M66 2025-05-31

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.

1. Introduction à get_defined_constants ()

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.

2. Introduction à array_walk_recursive ()

array_walk_recursive () accepte deux paramètres:

  1. Le réseau d'entrée (doit être multidimensionnel)

  2. Fonction de rappel, effectue certaines opérations sur chaque valeur du tableau

grammaire:

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

3. Utiliser en combinaison: traiter toutes les valeurs constantes

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&#39;autres types de constantes,Voici une démonstration uniquement
        echo "$key => " . var_export($value, true) . "\n";
    }
});

Exemple de description:

  • 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.

4. Scénarios d'application pratiques

  1. Outil de débogage : affichez rapidement toutes les constantes et valeurs définies.

  2. Vérification de la sécurité : vérifiez si les valeurs constantes sensibles sont exposées.

  3. 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 ).

  4. Journalisation : Sortie toutes les informations constantes de la clé pendant la phase d'initialisation de l'application.

5. Résumé

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.