Dans PHP, une constante est un identifiant dont la valeur ne peut pas être modifiée lors de l'exécution du script. Habituellement, la fonction Define () est utilisée pour définir les constantes, ou le mot-clé const peut être utilisé. Cependant, dans certains scénarios, nous devrons peut-être vérifier si une constante a été définie, surtout si ces constantes peuvent être chargées dynamiquement par des bibliothèques tierces, des fichiers de configuration ou d'autres modules.
En plus de la fonction défini () couramment utilisée, PHP fournit également une fonction intégrée get_defined_constants () , qui peut renvoyer toutes les constantes définies et les présenter comme des tableaux. En utilisant cela en conjonction avec la fonction array_key_exists () , nous pouvons obtenir une détection d'existence constante plus flexible et précise. Cet article présentera des exemples d'utilisation et d'application pratiques de cette combinaison.
La fonction get_defined_constants () renvoie un tableau multidimensionnel contenant toutes les constantes définies. La structure du tableau est la suivante:
[
'Core' => [...],
'pcre' => [...],
'user' => [
'MY_CONSTANT' => 'value',
...
],
...
]
Parmi eux, la partie utilisateur est une constante définie par l'utilisateur, tandis que les autres pièces sont définies par PHP intégrée ou étendue.
En obtenant le tableau GET_DEFINED_CONSTANTS (TRUE) ['User'] , nous pouvons répertorier toutes les constantes définies par l'utilisateur et utiliser array_key_exists () pour déterminer si un nom constant existe. Par exemple:
define('MY_SITE_URL', 'https://m66.net');
$userConstants = get_defined_constants(true)['user'];
if (array_key_exists('MY_SITE_URL', $userConstants)) {
echo 'constante MY_SITE_URL Défini,La valeur est:' . $userConstants['MY_SITE_URL'];
} else {
echo 'constante MY_SITE_URL Indéfini';
}
Dans cet exemple, nous définissons d'abord la constante my_site_url , puis utilisons get_defined_constants (true) ['utilisateur'] pour obtenir toutes les constantes définies par l'utilisateur et utilisons array_key_exists () pour porter des jugements.
Bien que l'utilisation de la fonction définie () puisse également vérifier si une constante existe, lorsque nous devons analyser ou déboguer la définition de toutes les constantes dans le système actuel, get_defined_constants () combiné avec les opérations du tableau a un avantage. Par exemple, vous pouvez imprimer toutes les constantes à partir de My_ en utilisant le code suivant:
foreach (get_defined_constants(true)['user'] as $key => $value) {
if (strpos($key, 'MY_') === 0) {
echo "$key => $value\n";
}
}
Ce qui suit est un exemple de jugement de configuration, qui est particulièrement courant dans les déploiements multi-environnements:
// config.php
define('ENVIRONMENT', 'production');
// init.php
$userConstants = get_defined_constants(true)['user'];
if (array_key_exists('ENVIRONMENT', $userConstants)) {
if ($userConstants['ENVIRONMENT'] === 'production') {
error_reporting(0);
} else {
error_reporting(E_ALL);
}
} else {
// Environnement par défaut
define('ENVIRONMENT', 'development');
error_reporting(E_ALL);
}
De cette façon, nous pouvons non seulement nous assurer que l'existence de constantes est plus flexible, mais aussi empêcher les avertissements causés par des définitions répétées des constantes.
Combinaison get_defined_constants () et array_key_exists () est une manière plus puissante et plus extensible que la fonction traditionnelle définie () . Il nous permet de comprendre et de gérer profondément les définitions constantes dans l'environnement actuel de l'exécution du script, en particulier dans les grands projets et les architectures multi-modules. Qu'il soit utilisé pour le débogage, la vérification de la configuration ou la logique de contrôle d'exécution, cette méthode vaut la peine de maîtriser et d'utiliser.