W3docs

define()

Découvrez comment define() en PHP crée des constantes, en quoi il diffère de const, quelles valeurs il accepte, et les pièges liés à la sensibilité à la casse et aux constantes de type tableau.

Ce que fait la fonction define()

La fonction define() crée une constante — une valeur nommée qui ne peut pas être modifiée une fois définie. Contrairement à une variable, une constante n'a pas de préfixe $, elle est globale à l'ensemble du script (y compris à l'intérieur des fonctions), et toute tentative de la redéfinir déclenche un avertissement plutôt que d'écraser silencieusement la valeur.

Utilisez define() lorsque vous voulez une source unique de vérité pour une valeur qui ne doit jamais changer à l'exécution : un indicateur de configuration, un numéro de version, un chemin de fichier ou un point de terminaison d'API.

Syntaxe

define(string $name, mixed $value, bool $case_insensitive = false): bool
  • $name — le nom de la constante. Par convention, il s'écrit en majuscules avec des underscores (MAX_USERS), mais tout identifiant valide fonctionne.
  • $value — la valeur à stocker. Les scalaires (int, float, string, bool) et null ont toujours été autorisés ; les tableaux sont devenus des valeurs valides à partir de PHP 7.0.
  • $case_insensitive (optionnel) — historiquement, passer true permettait de lire la constante quelle que soit la casse. Ce paramètre est déprécié depuis PHP 7.3 et supprimé en PHP 8.0, donc omettez-le et considérez les noms de constantes comme sensibles à la casse.

define() retourne true en cas de succès et false en cas d'échec.

Un exemple de base

php— editable, runs on the server

Ici, define() crée une constante nommée GREETING contenant Hello, world!, puis echo l'affiche par son nom — sans $ et sans guillemets.

Stocker un tableau dans une constante

Depuis PHP 7.0, une constante peut contenir un tableau, ce qui est pratique pour des tables de correspondance fixes ou des listes d'options :

<?php
define("ROLES", ["admin", "editor", "viewer"]);
echo ROLES[1]; // editor
?>

Vérifier avant d'utiliser une constante

Lire une constante non définie est une erreur en PHP 8.0+. Protégez-vous avec defined() pour que votre code se dégrade proprement :

<?php
if (!defined("APP_ENV")) {
    define("APP_ENV", "production");
}
echo APP_ENV; // production
?>

define() vs. const

PHP propose deux façons de déclarer une constante, et elles ne sont pas interchangeables :

Caractéristiquedefine()const
Quand elle s'exécuteÀ l'exécutionÀ la compilation
Utilisation conditionnelle / dans une boucleOui — peut se trouver dans un if/forNon — doit être au niveau supérieur ou dans une classe
Nom dynamiqueOui — le nom peut être une variableNon — le nom est fixe
Constantes de classeNonOui

Optez pour define() lorsque le nom ou la valeur est calculé, ou lorsque la déclaration doit être conditionnelle. Utilisez const pour des constantes simples toujours déclarées et pour les constantes de classe.

Pièges courants

  • Pas de $ et pas de guillemets lors de la lecture. Écrivez echo GREETING;, pas echo $GREETING; ni echo "GREETING";.
  • Redéfinir avertit, mais n'écrase pas. Un second define("GREETING", ...) émet un avertissement et la valeur d'origine reste inchangée.
  • Les noms sont sensibles à la casse. GREETING et Greeting sont désormais deux constantes différentes, maintenant que le paramètre d'insensibilité à la casse a disparu.
  • Définissez-la une seule fois, tôt. Comme les constantes sont globales et permanentes, définissez-les près du début de votre script ou dans un fichier de configuration.

Conclusion

define() est le moyen, à l'exécution, de créer une valeur globale et immuable en PHP. Combinez-la avec defined() pour éviter les avertissements de redéfinition, préférez const pour les constantes fixes définies à la compilation et les constantes de classe, et consultez PHP Constants pour une vue d'ensemble.

Pratique

Pratique
En PHP, à quoi sert la fonction « define » ?
En PHP, à quoi sert la fonction « define » ?
Was this page helpful?