PHP предоставляет большое количество предопределенных констант для любого запускаемого сценария.
Однако многие константы определяются различными библиотеками расширений и появляются только тогда, когда эти библиотеки расширений загружаются либо динамически, либо включаются во время компиляции.
Существует восемь магических констант, значения которых меняются в зависимости от их расположения в коде.
Например, значение __LINE__ зависит от строки, в которой он находится в скрипте. Эти специальные константы не чувствительны к регистру и имеют следующий вид:
Текущий номер строки в файле.
<?php эхо ' Это номер строки " ' .__ LINE__ . ' " > ?
Выходной результат приведенного выше примера:
Это строка «2»
Полный путь и имя файла. Если используется во включенном файле, возвращает имя включенного файла.
Начиная с PHP 4.0.2, __FILE__ всегда содержит абсолютный путь (или разрешенный абсолютный путь в случае символической ссылки), тогда как версии до этого иногда содержали относительный путь.
Пример:
<?php эхо ' Файл находится по адресу " ' . __FILE__ . ' " ' ? >
Выходной результат приведенного выше примера:
Файл находится по адресу «E:wampwwwtestindex.php».
Каталог, в котором находится файл. Если используется во включенном файле, возвращает каталог, в котором находится включенный файл.
Это эквивалентно имени_каталога(__FILE__). Имена каталогов не включают косую черту в конце, если они не являются корневым каталогом. (Новое в PHP 5.3.0)
<?php эхо ' Файл расположен по адресу " ' . __DIR__ . ' " ' ? >
Выходной результат приведенного выше примера:
Файл находится по адресу «E:wampwwwtest».
Имя функции (новое в PHP 4.3.0). Начиная с PHP 5, эта константа возвращает имя функции, когда она была определена (с учетом регистра). В PHP 4 это значение всегда записано строчными буквами.
<?php функция тест ( ) { эхо ' Имя функции : ' __FUNCTION__ ; тест ( ) ? >
Выходной результат приведенного выше примера:
Имя функции: тест
Имя класса (новое в PHP 4.3.0). Начиная с PHP 5, эта константа возвращает имя класса при его определении (с учетом регистра).
В PHP 4 это значение всегда записано строчными буквами. Имя класса включает область, в которой он объявлен (например, FooBar). Обратите внимание, что начиная с PHP 5.4 __CLASS__ также работает и с типажами. При использовании в методе типажа __CLASS__ — это имя класса, который вызывает метод типажа.
<?php сорт тест { функция _print ( ) { эхо ' Имя класса : ' . __CLASS__ " <br> " ; ' Имя функции : ' __FUNCTION__ ; } $т = новый тест ( ) ; $t -> _print ( ) ? >;
Выходной результат приведенного выше примера:
Имя класса: test Имя функции: _print
Имя признака (новое в PHP 5.4.0). Начиная с PHP 5.4.0, в PHP реализован метод повторного использования кода, называемый типажами.
Имя признака включает область, в которой он объявлен (например, FooBar).
Члены, унаследованные от базового класса, переопределяются методом MyHelloWorld во вставленном признаке SayWorld. Его поведение соответствует методам, определенным в классе MyHelloWorld. Порядок приоритета таков: методы текущего класса переопределяют методы типажа, которые, в свою очередь, переопределяют методы базового класса.
<?php сорт База { общественный функция скажи привет ( ) { эхо ' Привет ' ; } } черта SayWorld { общественный функция скажи привет ( ) { родитель :: sayHello ( ) echo ' Мир! ' ; } } сорт МойHelloWorld простирается База { использовать Скажи мир ; $о = новый MyHelloWorld ( ) ; $o -> SayHello ( ) ; >
Приведенная выше процедура выведет:
Привет, мир!
Имя метода класса (новое в PHP 5.0.0). Возвращает имя метода в том виде, в каком оно было определено (с учетом регистра).
Пример:
<?php функция тест ( ) { эхо ' Имя функции: ' . __METHOD__ ; тест ( ) ? >
Выходной результат приведенного выше примера:
Имя функции: тест
Имя текущего пространства имен (с учетом регистра). Эта константа определяется во время компиляции (новая возможность в PHP 5.3.0).
Пример:
<?php пространство имен МойПроект ; эхо ' Пространство имен: " ' , __NAMESPACE__ , ' " ' // Вывод "MyProject" ; ?>
Выходной результат приведенного выше примера:
Пространство имен: «MyProject».