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

