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.
 
 

Nom
Description
__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__
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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
?>
<?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 ?>
<?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__
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
// Affiche le chemin absolu de ce fichier
echo "Le chemin absolu de ce fichier est: " . __FILE__;
?>
<?php // Affiche le chemin absolu de ce fichier echo "Le chemin absolu de ce fichier est: " . __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__
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
// Affiche le répertoire de ce fichier
echo "Le répertoire de ce fichier est: " . __DIR__;
?>
<?php // Affiche le répertoire de ce fichier echo "Le répertoire de ce fichier est: " . __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__
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
function testFunction(){
echo "Le nom de la fonction est : " . __FUNCTION__;
}
testFunction();
?>
<?php function testFunction(){ echo "Le nom de la fonction est : " . __FUNCTION__; } testFunction(); ?>
<?php
	function testFunction(){
		echo  "Le nom de la fonction est : " . __FUNCTION__;
	}

	testFunction(); 
?>

La sortie :

Le nom de la fonction est : testFunction

 

__CLASS__
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
class maClasse
{
public function getClassName(){
return __CLASS__;
}
}
$c = new maClasse();
echo $c->getClassName();
?>
<?php class maClasse { public function getClassName(){ return __CLASS__; } } $c = new maClasse(); echo $c->getClassName(); ?>
<?php
	class maClasse
	{
		public function getClassName(){
			return __CLASS__;
		}
	}

	$c = new maClasse();
	echo $c->getClassName(); 
?>

La sortie :

maClasse

 

__METHOD__
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
class maClasse
{
public function methodName(){
echo __METHOD__;
}
}
$c = new maClasse();
$c->methodName();
?>
<?php class maClasse { public function methodName(){ echo __METHOD__; } } $c = new maClasse(); $c->methodName(); ?>
<?php
	class maClasse
	{
		public function methodName(){
			echo __METHOD__;
		}
	}

	$c = new maClasse();
	$c->methodName(); 
?>

La sortie :

maClasse::methodName

 

__NAMESPACE__
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
namespace MonEspaceDeNom;
class maClasse
{
public function getNamespace(){
return __NAMESPACE__;
}
}
$c = new maClasse();
echo $c->getNamespace();
?>
<?php namespace MonEspaceDeNom; class maClasse { public function getNamespace(){ return __NAMESPACE__; } } $c = new maClasse(); echo $c->getNamespace(); ?>
<?php
	namespace MonEspaceDeNom;
	
	class maClasse
	{
		public function getNamespace(){
			return __NAMESPACE__;
		}
	}
	
	$c = new maClasse();
	echo $c->getNamespace();
?>

La sortie :

MonEspaceDeNom

 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *