Constantes magiques
PHP Manual
PHP Manual»Les constantes»Constantes magiques

Les constantes magiques sont des mots-clés qui sont remplacés par des informations sur leur propre emplacement dans le code source : leur fichier et leur ligne, ainsi que la fonction, la classe, le trait, l'espace de noms ou le hook de propriété qui les entourent. Malgré leur nom, ce ne sont pas de vraies constantes : defined() et constant() ne les reconnaissent pas, et une constante du même nom créée avec define() n'a aucun effet sur elles. Elles sont insensibles à la casse. Lorsqu'elles sont utilisées en dehors du contexte auquel elles se rapportent (par exemple __CLASS__ en dehors d'une classe), elles sont remplacées par une chaîne vide.

Les constantes magiques de PHP
Nom Description
__LINE__ La ligne sur laquelle elle est écrite.
__FILE__ Le chemin complet et le nom du fichier dans lequel elle est écrite, avec les liens symboliques résolus.
__DIR__ Le dossier du fichier, équivalent à dirname(__FILE__). Il ne contient pas de slash final, sauf s'il s'agit du dossier racine.
__FUNCTION__ Le nom de la fonction dans laquelle elle est écrite, incluant son espace de noms (par exemple Foo\bar). À l'intérieur d'une méthode, seul le nom de la méthode. Pour les fonctions anonymes, un nom généré par le moteur qui inclut l'endroit où la fermeture a été définie (à partir de PHP 8.4.0 ; auparavant {closure}).
__CLASS__ Le nom de la classe dans laquelle elle est écrite, incluant son espace de noms (par exemple Foo\Bar). À l'intérieur d'un trait, le nom de la classe qui utilise le trait. Pour les classes anonymes, un nom généré par le moteur. Pour obtenir le nom de la classe sur laquelle une méthode a été appelée, utiliser static::class.
__TRAIT__ Le nom du trait, incluant son espace de noms (par exemple Foo\Bar).
__METHOD__ Le nom de la classe et de la méthode dans laquelle elle est écrite (par exemple Foo\Bar::baz). À l'intérieur d'un trait, le nom du trait est utilisé à la place du nom de la classe. En dehors d'une méthode, identique à __FUNCTION__.
__PROPERTY__ Le nom de la propriété, lorsqu'elle est utilisée à l'intérieur d'un hook de propriété. À partir de PHP 8.4.0.
__NAMESPACE__ Le nom de l'espace de noms courant.

Exemple #1 Utilisation des constantes magiques

<?php
namespace App;

function helper()
{
    echo __FUNCTION__, "\n";
    echo __METHOD__, "\n";
}

trait Greets
{
    public function greet()
    {
        echo __CLASS__, "\n";
        echo __TRAIT__, "\n";
        echo __METHOD__, "\n";
        echo __FUNCTION__, "\n";
    }
}

class Greeter
{
    use Greets;
}

helper();
(new Greeter)->greet();
echo __NAMESPACE__, "\n";

L'exemple ci-dessus va afficher :

App\helper
App\helper
App\Greeter
App\Greets
App\Greets::greet
greet
App
To Top