Les constantes magiques en PHP
Les constantes magiques sont des constantes prédéfinies dans PHP qui se changent en fonction de leur contexte. Elles commencent par un double underscore (__) et se terminent par un double underscore (__).
Elles sont similaires aux autres constantes prédéfinies mais comme elles changent leurs valeurs selon le contexte, elles sont appelées constantes magiques.
Il y a 8 constantes magiques définies dans le tableau ci-dessous. Elles sont insensibles à la casse.
__LINE__ | Représente le numéro de la ligne courante là où il est utilisé. |
__FILE__ | Représente le chemin d’accès complet et le nom du fichier. |
__DIR__ | Représente le chemin complet du répertoire du fichier. Équivalent à dirname(__file__). Il n’a pas de Slash « / » à la fin, sauf s’il s’agit d’un répertoire racine. |
__FUNCTION__ | Représente le nom de la fonction là où elle est utilisée. |
__CLASS__ | Représente le nom de la classe là où elle est utilisé. |
__TRAIT__ | Représente le nom du trait là où il est utilisé. |
__METHOD__ | Représente le nom de la méthode du classe là où elle est utilisée. Le nom de la méthode est retourné tel qu’il a été déclaré. |
__NAMESPACE__ | Représente le namespace actuel. |
Regardons quelques exemples pour chacune des constantes magiques ci-dessus.
__LINE__
<?php echo "Numéro de ligne " . __LINE__ . "<br>"; // Numéro de ligne 2 echo "Numéro de ligne " . __LINE__ . "<br>"; // Numéro de ligne 3 echo "Numéro de ligne " . __LINE__ . "<br>"; // Numéro de ligne 4 ?>
La sortie :
Numéro de ligne 2 Numéro de ligne 3 Numéro de ligne 4
__FILE__
<?php // Affiche le chemin absolu de ce fichier echo "Le chemin absolu de ce fichier est: " . __FILE__; ?>
La sortie :
Le chemin absolu de ce fichier est: C:/windows/users/wamp/www/test.php
__DIR__
<?php // Affiche le répertoire de ce fichier echo "Le répertoire de ce fichier est: " . __DIR__; ?>
La sortie :
Le répertoire de ce fichier est: C:/windows/users/wamp/www
__FUNCTION__
<?php function testFunction(){ echo "Le nom de la fonction est : " . __FUNCTION__; } testFunction(); ?>
La sortie :
Le nom de la fonction est : testFunction
__CLASS__
<?php class maClasse { public function getClassName(){ return __CLASS__; } } $c = new maClasse(); echo $c->getClassName(); ?>
La sortie :
maClasse
__METHOD__
<?php class maClasse { public function methodName(){ echo __METHOD__; } } $c = new maClasse(); $c->methodName(); ?>
La sortie :
maClasse::methodName
__NAMESPACE__
<?php namespace MonEspaceDeNom; class maClasse { public function getNamespace(){ return __NAMESPACE__; } } $c = new maClasse(); echo $c->getNamespace(); ?>
La sortie :
MonEspaceDeNom