Position actuelle: Accueil> Derniers articles> Pourquoi certaines constantes apparaissent-elles comme des valeurs nulles lors de l'utilisation de la fonction get_defined_constants?

Pourquoi certaines constantes apparaissent-elles comme des valeurs nulles lors de l'utilisation de la fonction get_defined_constants?

M66 2025-05-22

La fonction get_defined_constants renvoie un tableau contenant toutes les constantes définies et leurs valeurs correspondantes. Const est défini par le mot-clé Define () ou const , et ils sont immuables tout au long du script.

Par exemple, le code suivant montre comment définir les constantes et utiliser get_defined_constants pour afficher les constantes définies:

 define("SITE_URL", "https://m66.net");
define("SITE_NAME", "M66");

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

La sortie sera similaire à:

 Array
(
    [SITE_URL] => https://m66.net
    [SITE_NAME] => M66
    ...
)

De cette façon, vous pouvez voir toutes les constantes définies et leurs valeurs.

Pourquoi certaines constantes apparaissent-elles comme des valeurs nulles?

Parfois, lorsque Get_defined_Constants est exécuté, les valeurs de certaines constantes apparaîtront vides. Cette situation peut être causée par plusieurs raisons:

  1. Les constantes ne sont pas affectées correctement <br> Une constante doit être attribuée immédiatement à une valeur lorsqu'elle est définie. Si une constante n'est pas correctement fournie dans l'instruction Define () ou const , ou si la valeur est une chaîne vide, la valeur de cette constante sera affichée comme vide lorsqu'elle est obtenue via get_defined_constants .

     define("EMPTY_CONSTANT", "");
    

    Le code ci-dessus définit un vide_constant constant avec une chaîne vide. Lorsque get_defined_constants est appelé, la sortie s'affiche:

     [EMPTY_CONSTANT] => 
    
  2. Portée de la définition constante <br> En PHP, la portée des constantes est généralement mondiale. Mais si vous définissez des constantes dans certaines lunettes (comme les fonctions intérieures), elles peuvent ne pas être renvoyées par get_defined_constants .

     function defineInsideFunction() {
        define("FUNC_CONST", "Hello, World!");
    }
    
    defineInsideFunction();
    print_r(get_defined_constants());
    

    Si vous définissez une constante à l'intérieur de la fonction, elle peut ne pas apparaître dans le résultat de get_defined_constants . Pour éviter ce problème, assurez-vous que la définition des constantes est effectuée dans la portée globale.

  3. Définition constante conditionnelle <br> Si la définition d'une constante est enveloppée dans certaines instructions conditionnelles et que la condition n'est pas satisfaite, la constante ne sera pas définie. Par conséquent, ces constantes peuvent ne pas être affichées lorsqu'ils sont récupérés via get_defined_constants .

     if (false) {
        define("CONDITION_CONST", "This will not be defined");
    }
    

    Dans ce cas, Condition_Const n'apparaîtra pas dans le résultat de get_defined_constants , car le jugement conditionnel échoue et la constante n'est pas définie.

  4. Constantes prédéfinies manquantes
    PHP lui-même définit certaines constantes prédéfinies lors de l'exécution, telles que PHP_Version , PHP_OS , etc. Mais dans certains cas particuliers, tels que les configurations d'environnement personnalisées, PHP peut ne pas charger de constantes prédéfinies, de sorte qu'elles ne peuvent pas être affichées.

    Dans certains environnements spécifiques, certaines constantes peuvent varier en fonction de l'environnement. Si vous voyez des constantes prédéfinies vides dans une configuration spécifique, vous devrez peut-être vérifier votre configuration PHP ou votre environnement d'exécution.

Comment éviter la situation où les constantes sont nuls?

Pour éviter que les constantes montrent des valeurs nulles, assurez-vous de définir les constantes:

  1. Assurez-vous que la constante a une valeur valide lorsqu'elle est définie et n'est pas une chaîne vide.

  2. Assurez-vous que la définition des constantes est effectuée à l'échelle mondiale et évitez d'être définie uniquement dans les lunettes locales.

  3. Lors de la définition d'une constante dans une déclaration conditionnelle, il est nécessaire de s'assurer que la condition tient toujours ou de porter des jugements conditionnels avant la définition constante.

  4. Si la constante prédéfinie est manquante, vérifiez votre configuration d'environnement PHP pour vous assurer que les constantes pertinentes sont chargées correctement au moment de l'exécution.