En PHP, les constantes sont des identificateurs qui ne peuvent pas être modifiés lors de l'exécution du script et sont généralement utilisés pour stocker des données qui ne changent pas à l'échelle mondiale. La définition des constantes utilise généralement la fonction Define () . Lors de la détermination de la façon dont une constante existe et accède dynamiquement à sa valeur à l'exécution, les deux fonctions définies () et constant () sont couramment utilisées. Cet article présentera en profondeur comment utiliser ces deux fonctions et comment les combiner pour fonctionner de manière flexible.
défini (chaîne $ name): bool
Détermine si un nom de Nom de nom constant a été défini. Renvoie une valeur booléenne.
constant (chaîne $ name): mixée
Renvoie la valeur du nom constant $ constant. Si la constante n'est pas définie, une erreur sera lancée.
Ces deux fonctions sont des outils puissants pour gérer les noms constants dynamiques, en particulier dans des scénarios tels que la configuration, le chargement du plug-in, la vérification des autorisations, etc.
Utiliser Define () pour définir les constantes:
define('APP_ENV', 'production');
Sa valeur peut ensuite être directement référencée via la constante APP_ENV .
Dans certains cas, les constantes peuvent provenir de fichiers de configuration ou de systèmes externes, nous pouvons vérifier s'ils sont définis avant d'utiliser:
if (defined('APP_ENV')) {
echo 'L'environnement actuel est: ' . APP_ENV;
} else {
echo 'Constantes d'environnement non définies';
}
Si vous souhaitez référencer les noms constants via des variables, vous devez utiliser constant () :
$constName = 'APP_ENV';
if (defined($constName)) {
echo 'L'environnement actuel est: ' . constant($constName);
}
Cette méthode est souvent utilisée dans la configuration des composants ou les mécanismes de plug-in, tels que:
$plugin = 'Uploader';
$constName = 'PLUGIN_' . strtoupper($plugin) . '_ENABLED';
if (defined($constName) && constant($constName) === true) {
echo "Plugin {$plugin} Activé";
}
Supposons qu'il existe un fichier de configuration multi-environnement qui charge dynamiquement la configuration en fonction des constantes d'environnement définies:
define('APP_ENV', 'development');
$configName = 'CONFIG_' . strtoupper(APP_ENV) . '_DB';
define('CONFIG_DEVELOPMENT_DB', 'mysql://user:[email protected]/devdb');
define('CONFIG_PRODUCTION_DB', 'mysql://user:[email protected]/proddb');
if (defined($configName)) {
$dbConfig = constant($configName);
echo "Informations sur la connexion de la base de données:$dbConfig";
}
Supposons que vous définissiez une série de constantes d'autorisation:
define('PERM_USER_EDIT', true);
define('PERM_USER_DELETE', false);
Vous pouvez utiliser une fonction pour combiner défini () et constante () pour déterminer les autorisations:
function hasPermission(string $perm): bool {
$permConst = 'PERM_' . strtoupper($perm);
return defined($permConst) && constant($permConst) === true;
}
if (hasPermission('user_edit')) {
echo 'Vous avez la permission de modifier les utilisateurs';
}
Le nom constant passé dans constant () doit être une chaîne. Si la constante n'existe pas, un avertissement sera lancé.
L'utilisation de défini () peut empêcher en toute sécurité les erreurs causées par des constantes non définies.
Les noms constants sont sensibles à la casse (à moins que le troisième paramètre de Define () soit défini sur true , mais ce paramètre a été obsolète après PHP 7.3).
Défini () et constant () sont des outils puissants pour gérer les constantes dynamiques, en particulier adaptées à la charge de configuration dynamique, aux systèmes de plug-in, au contrôle d'autorisation et à d'autres scénarios. L'utilisation de ces deux fonctions peut raisonnablement rendre votre programme PHP plus flexible, robuste et modulaire.