Constantes et constantes magiques en PHP

Dans cette leçon, nous allons définir ce que sont les constantes en PHP, présenter les constantes magiques qui sont des constantes pré-définies ou internes au PHP et apprendre à créer nos propres constantes.

 

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>

 

Définition et création d'une constante en PHP avec define

 

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 constanteDescription
__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::classContient 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>

 

Présentation et utilisation des constantes magiques PHP

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.

2 réflexions au sujet de “Constantes et constantes magiques en PHP”

  1. 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.

Laisser un commentaire