Définition des constantes PHP
Une constante est un identifiant ou un nom qui représente une valeur simple. Les constantes, tout comme les variables, vont donc être des conteneurs qui vont nous servir à stocker une valeur.
Cependant, à la différence des variables, la valeur stockée dans une constante ne va pas pouvoir être modifiée : elle va être « constante » (sauf dans le cas des constantes magiques dont nous allons reparler plus tard).
Notez également que les constantes vont par défaut être toutes accessibles dans tout le script : on va pouvoir les définir n’importe où dans le script et pouvoir y accéder depuis n’importe quel autre endroit du script.
Notez de plus que par convention, les constantes seront toujours écrites en majuscules pour bien les différencier des autres objets du langage PHP.
Créer ou définir une constante en PHP
Pour définir une constante en PHP, nous allons pouvoir utiliser la fonction define()
ou le mot clef const
.
Pour créer une constante en utilisant define()
, nous allons devoir passer le nom de la constante que l’on souhaite créer et la valeur que doit stocker la constante en arguments de cette fonction. Une fois qu’une constante est définie, elle ne peut jamais être modifiée ni détruite.
Si vous souhaitez créer une constante en utilisant le mot clef const
, alors vous devez noter que seules des données de type string
, integer
, float
, boolean
et array
(dans les dernières versions de PHP) vont pouvoir être stockées dans notre constante.
En dehors de cela, le nom des constantes suit les mêmes règles que n’importe quel nom en PHP, à savoir qu’il doit obligatoirement commencer par une lettre ou éventuellement par un underscore. Notez également que par défaut le nom des constantes est sensible à la casse mais cela ne devrait pas importer puisque vous devriez toujours déclarer vos constantes en majuscules. De plus, à la différence des variables, nous ne devrons pas préfixer le nom d’une constante avec le signe $
.
Pour ensuite utiliser la valeur d’une constante ou l’afficher, il suffit d’appeler la constante par son nom comme on en a l’habitude avec les variables.
<!DOCTYPE html> <html> <head> <title>Cours PHP & MySQL</title> <meta charset="utf-8"> <link rel="stylesheet" href="cours.css"> </head> <body> <h1>Titre principal</h1> <?php define('DIX', 10); echo 'La constante DIX stocke la valeur ' .DIX; ?> <p>Un paragraphe</p> </body> </html>
Les constantes prédéfinies et les constantes magiques en PHP
Le PHP nous fournit également un certain nombre de constantes prédéfinies qui vont généralement nous donner des informations de type « meta » comme la version de PHP actuellement utilisée, le plus petit entier supporté par PHP, des constantes de rapport d’erreur etc.
Ces constantes prédéfinies ne vont pas toujours être toutes disponibles car certaines sont définies par des extensions PHP. Une extension PHP est une librairie (un ensemble de feuilles de codes) qui permettent d’ajouter des fonctionnalités au PHP de base.
Parmi ces constantes prédéfinies, il y en a neuf qui vont retenir notre attention et qu’on appelle des constantes « magiques ». Ces constantes se distinguent des autres puisque leur valeur va changer en fonction de l’endroit dans le script où elles vont être utilisées.
Les constantes magiques sont reconnaissables par le fait que leur nom commence par deux underscores et se termine de la même manière (excepté pour une). Ce sont les suivantes :
Nom de la constante | Description |
---|---|
__FILE__ | Contient le chemin complet et le nom du fichier |
__DIR__ | Contient le nom du dossier dans lequel est le fichier |
__LINE__ | Contient le numéro de la ligne courante dans le fichier |
__FUNCTION__ | Contient le nom de la fonction actuellement définie ou {closure} pour les fonctions anonymes |
__CLASS__ | Contient le nom de la classe actuellement définie |
__METHOD__ | Contient le nom de la méthode actuellement utilisée |
__NAMESPACE__ | Contient le nom de l’espace de noms (« namespace ») courant |
__TRAIT__ | Contient le nom du trait (incluant le nom de l’espace de noms dans lequel il a été déclaré) |
ClassName::class | Contient le nom entièrement qualifié de la classe |
Pour le moment, nous allons nous concentrer sur les quatre premières constantes citées, car vous ne disposez pas encore de connaissances suffisantes pour bien comprendre les quatre dernières.
<!DOCTYPE html> <html> <head> <title>Cours PHP & MySQL</title> <meta charset="utf-8"> <link rel="stylesheet" href="cours.css"> </head> <body> <h1>Titre principal</h1> <?php //Affiche le numéro de la ligne où la constante a été appelée (dans le code) echo 'Numéro de ligne : ' .__LINE__. '<br>'; //Affiche le chemin du ficher et son nom echo 'Chemin complet du fichier : ' .__FILE__. '<br>'; //Affiche le nom du dossier qui contient le fichier echo 'Dossier contenant le fichier : ' .__DIR__. '<br>'; //Affiche à nouveau la ligne où la constante a été appelée echo 'Numéro de ligne : ' .__LINE__. '<br>'; //Renvoie le nom de la fonction depuis laquelle la constante est appelée function test(){ echo 'Constante appelée depuis la fonction ' .__FUNCTION__; } //Ne pas oublier d'exécuter la fonction pour qu'elle echo la valeur de la constante magique ! test(); ?> <p>Un paragraphe</p> </body> </html>
Les constantes magiques vont notamment être utiles pour récupérer des adresses de fichiers et les utiliser dans des fichiers de configuration ou lors d’appels à nos bases de données SQL ou encore pour effectuer des actions de débogage.
Bonjour, lorsque j’essaye votre code pour la constante avec le define comme suit:
j’ai l’erreur suivante:
Use of undefined constant DIX – assumed ‘DIX’
Vous avez oublié les guillemets simples à la ligne 12 étant donné que c’est une chaine de caractère. Sinon c’est un exellent tutoriel que je pratique avec beaucoup de plaisir, félicitations et merci beaucoup.
En effet, merci, c’est corrigé !
Amicalement,