"Волшебные" константы

PHP предоставляет большой список предопределенных констант для каждого выполняемого скрипта. Многие из этих констант определяются различными модулями и будут присутствовать только в том случае, если эти модули доступны в результате динамической загрузки или в результате статической сборки.

Есть девять волшебных констант, которые меняют свое значение в зависимости от контекста, в котором они используются. Например, значение __LINE__ зависит от строки в скрипте, на которой эта константа указана. Все "волшебные" константы разрешаются во время компиляции, в отличии от обычных констант, которые разрешаются во время исполнения. Специальные константы нечувствительны к регистру и их список приведен ниже:

Некоторые "волшебные" константы PHP
Имя Описание
__LINE__ Текущий номер строки в файле.
__FILE__ Полный путь и имя текущего файла с развернутыми симлинками. Если используется внутри подключаемого файла, то возвращается имя данного файла.
__DIR__ Директория файла. Если используется внутри подключаемого файла, то возвращается директория этого файла. Это эквивалентно вызову dirname(__FILE__). Возвращаемое имя директории не оканчивается на слэш, за исключением корневой директории.
__FUNCTION__ Имя функции.
__CLASS__ Имя класса. Это имя содержит название пространства имен, в котором класс был объявлен (например, Foo\Bar). Обратите внимание, что начиная с PHP5.4 __CLASS__ также работает в трейтах. При использовании в методах трейтов __CLASS__ является именем класса, в котором эти методы используется.
__TRAIT__ Имя трейта. Это имя содержит название пространства имен, в котором трейт был объявлен (например, Foo\Bar).
__METHOD__ Имя метода класса.
__NAMESPACE__ Имя текущего пространства имен.
ClassName::class Полное имя класса (с указанием пространства имен). Также смотрите ::class.

Смотрите также get_class(), get_object_vars(), file_exists() и function_exists().

Список изменений

Версия Описание
5.5.0 Добавлена волшебная константа ::class
5.4.0 Добавлена константа __TRAIT__
5.3.0 Добавлены константы __DIR__ и __NAMESPACE__
5.0.0 Добавлена константа __METHOD__
5.0.0 До этой версии значения некоторых магических констант были всегда в нижнем регистре. Все они теперь являются регистрозависимыми (содержат имена такими, какими они были объявлены).
4.3.0 Добавлены константы __FUNCTION__ и __CLASS__
4.0.2 __FILE__ всегда содержит полный путь с разрешенными симлинками. Раньше в некоторых случаях она содержала относительный путь.