PHP Магические константы
PHP предоставляет большое количество предопределённых констант любому запускаемому скрипту.
Однако многие константы определяются различными библиотеками расширений и появляются только тогда, когда эти библиотеки загружены, либо после динамической загрузки, либо когда они уже были подключены во время компиляции.
Существует восемь магических констант, значения которых меняются в зависимости от их положения в коде.
Например, значение __LINE__ зависит от строки в скрипте, где оно используется. Эти специальные константы нечувствительны к регистру, как показано ниже:
__LINE__
Текущий номер строки в файле.
Примеры
Вывод приведенного выше примера:
这是第 “ 2 ” 行
__FILE__
Полный путь и имя файла. Если используется внутри включённого файла, возвращается имя включённого файла.
Начиная с PHP 4.0.2, __FILE__ всегда содержит абсолютный путь (если это символическая ссылка, то это разрешённый абсолютный путь), тогда как в более ранних версиях он иногда содержал относительный путь.
Пример:
Примеры
Вывод приведенного выше примера:
该文件位于 “ E:\wamp\www\test\index.php ”
__DIR__
Каталог файла. Если используется внутри включённого файла, возвращается каталог включённого файла.
Это эквивалентно dirname(__FILE__). Если это не корневой каталог, имя не включает завершающую косую черту. (Добавлено в PHP 5.3.0)
Примеры
Вывод приведенного выше примера:
该文件位于 “ E:\wamp\www\test ”
__FUNCTION__
Имя функции (добавлено в PHP 4.3.0). Начиная с PHP 5, эта константа возвращает имя функции в момент её определения (с учётом регистра). В PHP 4 значение всегда было в нижнем регистре.
Примеры
Вывод приведенного выше примера:
函数名为:test
__CLASS__
Имя класса (добавлено в PHP 4.3.0). Начиная с PHP 5, эта константа возвращает имя класса, когда он был определён (с учётом регистра).
В PHP 4 значение всегда было в нижнем регистре. Имя класса включает его объявленную область видимости (например, Foo\Bar). Обратите внимание, что начиная с PHP 5.4, __CLASS__ также работает с трейтами. При использовании в методе трейта __CLASS__ — это имя класса, вызывающего метод трейта.
Примеры
Вывод приведенного выше примера:
类名为:test 函数名为:_print
__TRAIT__
Имя трейта (добавлено в PHP 5.4.0). Начиная с PHP 5.4.0, PHP реализует способ повторного использования кода, называемый трейтами.
Имя трейта включает его объявленную область видимости (например, Foo\Bar).
Члены, унаследованные от базового класса, переопределяются методом MyHelloWorld, вставленным из трейта SayWorld. Его поведение согласуется с методом, определённым в классе MyHelloWorld. Порядок приоритета таков: методы текущего класса переопределяют методы трейта, а методы трейта переопределяют методы базового класса.
Примеры
Приведённый выше пример выведет:
Hello World!
__METHOD__
Имя метода класса (добавлено в PHP 5.0.0). Возвращает имя метода на момент его определения (с учётом регистра).
Пример:
Примеры
Вывод приведенного выше примера:
函数名为:test
__NAMESPACE__
Имя текущего пространства имен (с учетом регистра). Эта константа определяется во время компиляции (добавлена в PHP 5.3.0).
Пример:
Примеры
Вывод приведенного выше примера:
命名空间为:"MyProject"Другие расширения