Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction GET_DEFINE_CONSTANTS de PHP pour écrire des outils pour automatiser l'analyse des constantes utilisées dans les projets

Comment utiliser la fonction GET_DEFINE_CONSTANTS de PHP pour écrire des outils pour automatiser l'analyse des constantes utilisées dans les projets

M66 2025-07-18

get_defined_constants () est une fonction intégrée dans PHP qui peut renvoyer un tableau associatif contenant toutes les constantes définies dans le script actuel. La clé du tableau est le nom de la constante et la valeur est la valeur de la constante. Vous pouvez utiliser cette fonction pour afficher toutes les constantes définies lors de l'exécution et effectuer un traitement ou une analyse supplémentaire.

 $constants = get_defined_constants();
print_r($constants);

Le code ci-dessus sortira toutes les constantes définies dans le script actuel. Cette fonction peut non seulement obtenir des constantes intégrées, mais également obtenir des constantes définies par la fonction Define () ou le mot clé const .

2. Obtenez la méthode d'utilisation des constantes spécifiques

Parfois, nous n'avons pas besoin d'obtenir toutes les constantes, mais plutôt un type spécifique de constante. La fonction get_defined_constants () fournit un paramètre facultatif $ catégoriser . Lorsque ce paramètre est vrai , le tableau retourné est regroupé en fonction de la catégorie de la constante.

 $constants = get_defined_constants(true);
print_r($constants);

À l'heure actuelle, le tableau retourné sera classé par la catégorie de la constante (comme le noyau , la norme , l'utilisateur ). Pour nos propres projets, les constantes apparaissent généralement dans la catégorie des utilisateurs .

3. Écrivez des constantes utilisées dans un projet d'analyse d'outils

Nous pouvons écrire un outil en fonction des besoins du projet pour analyser automatiquement les constantes utilisées dans le projet. Voici une simple implémentation:

 <?php

function analyze_constants_in_file($file_path) {
    // Obtenez toutes les constantes dans le fichier spécifié
    $constants = get_defined_constants(true);
    
    // Lire le contenu du fichier
    $file_content = file_get_contents($file_path);
    
    // Faire correspondre les constantes utilisées dans les fichiers
    preg_match_all('/\b[A-Z_][A-Z0-9_]*\b/', $file_content, $matches);
    
    $used_constants = array_unique($matches[0]);
    
    // Analyser les constantes utilisées dans le projet
    $defined_constants = $constants['user'];
    
    $result = [];
    foreach ($used_constants as $constant) {
        if (isset($defined_constants[$constant])) {
            $result[$constant] = $defined_constants[$constant];
        }
    }
    
    return $result;
}

// Appeler une fonction pour analyser les constantes dans un projet
$file_path = 'path/to/your/php/file.php'; // Remplacez par votre chemin de fichier
$used_constants = analyze_constants_in_file($file_path);

echo "Constantes utilisées dans les fichiers:\n";
print_r($used_constants);

?>

Le code ci-dessus implémente les fonctions suivantes:

  • Obtenez des constantes définies par l'utilisateur via get_defined_constants (true) .

  • Utilisez l'expression régulière preg_match_all () pour extraire tous les noms constants possibles dans le fichier.

  • Comparez les constantes extraites avec des constantes définies et sortez les constantes utilisées dans le fichier et leurs valeurs.

De cette façon, nous pouvons facilement automatiser toutes les constantes utilisées dans le projet.

4. Remplacement de l'URL intégré

Dans certains scénarios, il peut impliquer de remplacer le domaine URL dans le fichier avec un nom de domaine spécifique. Nous pouvons étendre l'outil ci-dessus pour remplacer automatiquement tous les noms de domaine dans le fichier et les remplacer par m66.net .

Voici le code étendu:

 <?php

function replace_urls_in_file($file_path, $new_domain = 'm66.net') {
    // Lire le contenu du fichier
    $file_content = file_get_contents($file_path);
    
    // Match régulierURLet remplacer le nom de domaine
    $file_content = preg_replace_callback('/https?:\/\/([a-z0-9\-\.]+)/i', function ($matches) use ($new_domain) {
        return str_replace($matches[1], $new_domain, $matches[0]);
    }, $file_content);
    
    // Enregistrer le fichier remplacé
    file_put_contents($file_path, $file_content);
    
    echo "Dans le fichierURLRemplacé par $new_domain\n";
}

// 调用函数替换Dans le fichierURL
$file_path = 'path/to/your/php/file.php'; // Remplacez par votre chemin de fichier
replace_urls_in_file($file_path);

?>

Le code ci-dessus implémente:

  • Utilisez des expressions régulières pour faire correspondre les URL dans le fichier.

  • Remplacez le nom de domaine correspondant par m66.net .

  • Une fois le remplacement terminé, enregistrez le contenu modifié dans le fichier.