Position actuelle: Accueil> Derniers articles> Quelles sont les différences dans les performances get_defined_constants () sur différentes versions PHP?

Quelles sont les différences dans les performances get_defined_constants () sur différentes versions PHP?

M66 2025-05-22

get_defined_constants () est une fonction intégrée en PHP pour obtenir toutes les constantes définies. Il renvoie un tableau associatif où la clé est le nom constant et la valeur est la valeur constante. Ceci est utile lors du débogage, de la réflexion ou de l'analyse de l'environnement d'exécution. Cependant, dans différentes versions de PHP, le comportement de cette fonction peut montrer quelques différences, principalement reflétées dans les aspects suivants:

1. Le nombre et le type de constantes changent

Avec le développement de PHP, de nouvelles constantes de base sont constamment introduites, en particulier après avoir ajouté de nouvelles extensions ou refactorisation des modules existants. Par exemple, dans PHP 7.x et PHP 8.x, les modifications du mécanisme de gestion des erreurs ont entraîné l'introduction d'un grand nombre de nouvelles constantes de niveau d'erreur E_ * .

Exemple:

 print_r(array_keys(get_defined_constants()));

Dans PHP 5.6, vous ne voyez peut-être pas les constantes de fusion comme E_ERROR | E_recoverable_error , mais après PHP 7, il y aura beaucoup plus de définitions de ces valeurs combinées.

2. Modifications de comportement des paramètres de classification ( get_defined_constants (true) )

À partir de PHP 5.3, get_defined_constants () prend en charge un paramètre booléen $ catégoriser , et lorsqu'il est défini sur true , les constantes sont classées par extension.

Exemple:

 print_r(get_defined_constants(true));

Dans différentes versions PHP, les noms de classification de différents modules d'extension peuvent changer. Par exemple:

  • Les tableaux dans PHP 7.2 peuvent contenir le noyau , le pcre , le spl , la date , le libxml , l'ouverture , la boucle , etc.

  • Tels que FFI , sodium et fibre introduits après PHP 8.0 seront également ajoutés aux résultats de sortie.

3. Différences entre les environnements de compilation et d'opération

Que certaines constantes apparaissent dans les résultats de get_defined_constants () peuvent être affectées par des fichiers de configuration tels que php.ini ou des options de compilation. Par exemple, si Zend Opcache est activé, si des modules d'extension spécifiques sont chargés, etc.

Exemple de code (en cours d'exécution dans la CLI):

 define('MY_APP_VERSION', '1.0.0');
print_r(get_defined_constants());

Cette sortie est souvent incohérente entre le serveur de développement et le serveur de production, car les paramètres d'extension et de configuration qu'ils permettent peuvent être différents.

4. Structure linguistique nouvellement introduite et constantes intégrées

PHP 8 présente des fonctionnalités de syntaxe telles que JIT, des expressions de correspondance, des attributs, etc., et apporte également de nouvelles constantes en conséquence. Running get_defined_constants () trouvera la survenue de constantes telles que php_fd_setsize , t_match , t_attribute , etc.

Ces nouvelles constantes n'existent pas du tout dans l'ancienne version, donc si vous comptez sur ces constantes lorsque vous écrivez du code hautement compatible, vous devez utiliser la fonction définie () pour juger.

5. Changer ou supprimer des valeurs constantes

Dans de rares cas, certaines constantes définies sont modifiées ou jetées dans une nouvelle version. Bien que l'équipe PHP assure généralement la compatibilité en arrière, il n'est pas exclu de faire des ajustements lorsque les améliorations de version majeure sont améliorées. Par exemple, certaines extensions qui interagissent avec le système sous-jacente peuvent modifier la valeur par défaut ou supprimer certaines constantes qui ne sont plus prises en charge car elles s'appuient sur les mises à jour de la bibliothèque C.