Php создание константы. Создание констант в PHP — const и define(). Вложенные пространства имен недопустимы

Разное

» Константы в PHP?

Навигация по Самоучителю: 1.1 О PHP 1.2 История PHP 1.3 Почему именно PHP? 1.4 Как это все (PHP) работает? 1.5 От интерпретатора к компилятору 1.6 Возможности PHP 1.7 Что необходимо для работы? 1.8 Ответы на ваши вопросы 1.9 Заключение к главе 2.1 Установка и конфигурирование 2.2 Установка Apache 2.3 Установка PHP 2.4 Установка MySQL 2.5 Настройка Apache 2.6 Настройка PHP 2.7 Настройка MySQL 2.8 Тестирование программ Apache, PHP 2.9 Заключение к главе 2 3.1 Синтаксис языка PHP 3.2 Профессиональная вставка 3.3 РНР и HTML 3.4 Комментарии в языке (коде) PHP 3.5 Оформление PHP кода программы 3.6 Заключение к главе 3 4.1 Переменные. Что такое переменные? 4.2 Переменные. Типы данных в PHP 4.3 Integer. Тип данных. 4.4 Double. Тип данных. 4.5 Boolean. Тип данных. 4.6 Другие типы данных 4.7 Определение переменных в PHP 4.8 Изменение типа данных в PHP 4.9 Ссылки на переменные в PHP 4.10 Динамические переменные в PHP 4.11 Что такое Константы в PHP? 4.12 Определение констант в языке PHP 4.13 Предопределенные константы в языке PHP 4.14 Заключение к главе 4 5.1 Операторы в PHP 5.2 Оператор присваивания в PHP 5.3 Арифметические операторы в PHP 5.4 Операторы отношения в PHP 5.5 Логические операторы в PHP 5.6 Поразрядные операторы в PHP 5.7 Строковые операторы в PHP 5.8 Оператор подавления ошибок в PHP 5.9 Операторы увеличения и уменьшения в PHP 5.10 Сокращенная запись присвоения переменных в PHP 5.11 Приоритетность и ассоциативность в PHP 5.12 Заключение к главе 5 6.1 Управляющие операторы PHP 6.2 Условный оператор IF 6.3 Условный оператор Elseif 6.4 Условный оператор Switch 6.5 Операторы цикла For 6.6 Оператор цикла While 6.7 Оператор цикла Do...while 6.8 Безусловный оператор Break 6.9 Безусловный оператор Continue 6.10 Безусловный оператор Exit 6.11 Require 6.12 Include 6.13 Заключение к главе 6 7.1 Функции в PHP 7.2 Определение функций в PHP 7.3 Аргументы функций в PHP 7.4 Область видимости переменных 7.5 Время жизни переменных в PHP 7.6 Рекурсия в PHP 7.7 Динамический вызов функций в PHP 7.8 Заключение к главе 7 8.1 Массивы в PHP 8.2 Присвоение значений массивов PHP 8.3 Функция array () PHP 8.4 Вывод PHP массивов 8.5 Обход массивов PHP. Функция count(), Конструкции foreach() 8.6 Функция reset() 8.7 each() 8.8 list() 8.9 Сложение массивов 8.10 Сравнение массивов 8.11 Добавление элементов массива 8.12 Удаление элементов массива 8.13 Сортировка массивов 8.14 Многомерные массивы 8.15 Преобразование в массив 8.16 Заключение к главе 8 9.1 Строка 9.2 Обработка переменных внутри строк 9.3 Вывод строк 9.4 Форматированный вывод строк 9.5 Длина строки в PHP 9.6 Поиск подстроки в строке 9.7 Чистка строк 9.8 Заключение к главе 9 10.1 Работа с HTML-формами 10.2 Передача данных HTML-формы. Метод GET и POST 10.3 Получение данных в PHP 10.4 Суперглобальные массивы $_GЕТ и $_POST 10.5 Заключение к главе 10 11.1 Открытие файлов в PHP 11.2 Закрытие файлов в PHP 11.3 Чтение и запись файлов в PHP 11.4 Копирование, удаление и переименование файлов в PHP 11.5 Получение информации о файлах в PHP 11.6 Файловый указатель в PHP 11.7 Открытие и закрытие каталогов в PHP 11.8 Чтение каталогов в PHP 11.9 Создание и удаление каталогов в PHP 11.10 Заключение к главе 11 12.1 Работа с базами данных MySQL в PHP 12.2 Соединение PHP с сервером базы данных MySQL 12.3 Создание и удаление базы данных MySQL 12.4 Создание и удаление таблиц MySQL 12.5 Работа с данными MySQL 12.6 Заключение к главе 12 13.1 Работа с изображениями в PHP. Библиотека GD 13.2 Создание и вывод изображений в PHP 13.3 Модификация изображений в PHP 13.4 Работа с текстом в PHP 13.5 Заключение к главе 13 14.1 Работа с датой и временем в PHP 14.2 Символы форматирования даты и времени в PHP 14.3 Функция date() и getdate() в PHP 14.4 Преобразования к абсолютному времени в PHP 14.5 Заключение к главе 14 15.1 Работа с регулярными выражениями в PHP 15.2 Регулярные выражения POSIX в PHP 15.3 Метасимволы в PHP 15.4 Классы символов 15.5 Квантификаторы 15.6 Замена по шаблону 15.7 Примеры регулярных выражений 15.8 Заключение к главе 15 16.1 Работа с Cookies в PHP 16.2 Создание Cookies в PHP 16.3 Чтение из Cookies 16.4 Удаление Cookies 16.5 Заключение к главе 16

Употребляя в повседневной жизни слово «константа», мы имеем в виду постоянное значение. Это может быть число Пи (3,14) или температура кипения воды (100 °С). В РНР тоже имеется возможность использовать константы. Смысл их применения заключается в том, что обозначив определенное значение, мы можем использовать его на протяжении всего кода программы.

(!) Константа - это неизменяемое значение.

Например, ваш друг Василий Пупкин создал Web-сайт и хочет, чтобы все знали имя администратора. При этом он находит самое простое и, на первый взгляд, верное решение (листинг 4.19).

Листинг 4.19. Вывод фамилии и имени администратора Web-сайта.

‹?php
echo "Администратор сайта: Пупкин Василий"; // вывод сообщения
?›

Соответственно, надо изменить имя администратора. Скорее всего, вы станете искать по всем страницам сайта текст, содержащий строчку Пупкин Василий. После нахождения надо разобраться, менять ли ее на ваше имя или нет. Не трудно заметить, что решение, на первый взгляд, простой задачи занимает много времени и не гарантирует корректную работу программы. Все эти проблемы можно было бы избежать, если бы Василий применил константу для обозначения своего имени. Для этого надо выбрать имя константы (обычно его называют идентификатором), например ADMIN_NAME, после чего определить ее значение (в нашем случае Пупкин Василий).

Теперь решение задачи будет выглядеть так, как показано в листинге 4.20.

Листинг 4.20. Пример использования констант.

‹html›
‹head›
‹title›Пример использования констант‹/title›
‹/head›
‹body›
‹?php
define("ADMIN_NAME", "Пупкин Василий"); // определение константы
echo "Администратор сайта: "; // вывод сообщения
echo ADMIN_NAME; // вывод значения константы
?›
‹/body›
‹/html›

В этом случае идентификатор ADMIN_NAME будет заменен значением Пупкин Василий. Для того чтобы изменить имя администратора Web-сайта, потребуется только корректировка строчки с определением константы. Рассмотрим эту тему более подробно.

константы .

Константам можно присваивать следующие типы данных.

Целые – целые числа или числа без десятичной точки (1, 999, 325812841).

Числа с плавающей точкой - числа, содержащие десятичную точку (1.11, 2.5, .44).

Строки – текстовая или числовая информация . Строковые данные всегда заключаются в кавычки ("Hello World", "478-477-5555").

Имена констант PHP в отличие от переменных не начинаются со знака "$". Имена констант обычно записывают в верхнем регистре. Имена констант могут содержать буквы, цифры и символ подчеркивания (_ ); они не могут, однако, начинаться с цифры. Объявление констант показано ниже.

define("STRING_CONSTANT", "This is my string."); define("NUMERIC_CONSTANT", 5);

Вывод констант

Следующий фрагмент кода демонстрирует объявление константы, присваивание константе значения и вывод результатов в окне браузера.

A Web Page

Пример 3.2.

My PHP program 500 2.25

В этом примере объявляются значения трех констант: STRING_CONST , INTEGER_CONST и FLOAT_CONST . Затем используется оператор echo для вывода содержимого констант в окне браузера. Кроме вывода в окне браузера, константы можно использовать при выполнении математических и строковых операций PHP.

Операторы PHP

Операторы применяются для выполнения операций или действий с переменными. Они могут включать присваивание значения переменной, выполнение сложения переменных, сравнение значений переменных и определение состояния условия.

Арифметические операторы

Операторы присваивания

Операторы сравнения

Логические операторы

Арифметические операторы используются для выполнения основных математических операций. В следующей таблице представлены арифметические операторы , которые применяются в PHP .

A Web Page

Пример 3.3.

The sum is 11 The difference is 9 The product is 27 The quotient is 343

Порядок выполнения операций

Когда вычисляется арифметическое выражение, существует заданный порядок, в котором выполняются операции. Этот порядок называется приоритетом операций. Умножение и деление имеют преимущество (и выполняются первыми) перед сложением и вычитанием, при движении в выражении слева направо. Этот порядок имеет важное влияние на то, будут ли получены ожидаемые результаты. Рассмотрим следующие объявления и присваивания.

Получающееся значение будет равно 18. Сначала $num1 умножается на $num2 , чтобы получить 20; затем $num3 вычитается из 20, чтобы получить 18. Предположим, однако, что в действительности надо сначала вычесть $num3 из $num2 , а затем умножить на $num1 , чтобы получить 12. Показанное выше выражение не создаст этот результат, потому что умножение имеет приоритет перед вычитанием и выполнится первым.

Поэтому часто необходимо переопределить порядок выполнения операций и явно управлять порядком вычисления выражения. Для этого используют скобки (), которые могут помочь изменить порядок выполнения арифметических операций. Приведенный выше пример можно переписать следующим образом.

В этот раз $answer равно 12. $num3 вычитается из $num2 , чтобы получить 3. Затем 3 умножается на $num1 .

Операторы присваивания используются для изменения значения текущей переменной на значение справа от оператора. В следующей таблице представлены операторы присваивания языка PHP.

Оператор Описание
= Переменной слева присваивается вычисленное справа значение
+= Складывает значение слева со значением справа и присваивает результат переменной слева
-= Вычитает значение справа из значения слева и присваивает результат переменной слева
*= Умножает значение справа на значения слева и присваивает результат переменной слева
/= Делит значение слева на значение справа и присваивает результат переменной слева
%= Делит значение слева на значение справа и присваивает остаток (по модулю) переменной слева
.= Значение слева соединяется (конкатенация) со значением справа, и результат присваивается переменной слева

Операторы сравнения используются для сравнения значений. В следующей таблице представлены операторы сравнения языка PHP.

(PHP 5 >= 5.3.0, PHP 7)

Этот список вопросов разделен на две части: общие вопросы и некоторые особенности реализации, которые полезны для более полного понимания.

Сперва, общие вопросы.

  1. Если я не использую пространства имен, следует ли считать что-либо из этого важным?
  2. Как мне использовать внутренние или глобальные классы в пространстве имен?
  3. Как мне использовать функции классов в пространствах имен, или константы в их собственном пространстве имен?
  4. Как такое имя как \my\name или \name преобразуется?
  5. Как такое имя, как my\name преобразуется?
  6. Как неполное имя класса такое как name преобразуется?
  7. Как неполное имя функции или неполное имя константы такое как name преобразуется?

Некоторые детали реализации пространств имен, которые полезно понимать.

  1. Импортируемые имена не могут конфликтовать с классами, определенными в том же файле.
  2. Ни функции, ни константы не могут быть заимпортированы с помощью оператора use .
  3. Динамические имена пространств имен (идентификаторы, взятые в кавычки) должны экранировать символ обратного слеша.
  4. Ссылаться на неопределенные константы, используя обратный слеш, нельзя. Выводится фатальная ошибка
  5. Невозможно переопределить специальные константы, такие как NULL, TRUE, FALSE, ZEND_THREAD_SAFE или ZEND_DEBUG_BUILD

Если я не использую пространства имен, следует ли считать что-либо из этого важным?

Нет. Пространства имен не оказывают никакого влияния ни на какой существующий код ни в каком виде или на любой написанный код, который не содержит пространств имен. Вы можете написать такой код, если желаете:

Пример #1 Доступ к глобальным классам вне пространства имен

$a = new \ stdClass ;
?>

Это функционально эквивалентно следующему:

Пример #2 Доступ к глобальным классам вне пространства имен

$a = new stdClass ;
?>

Как мне использовать внутренние или глобальные классы в пространстве имен?

Пример #3 Доступ ко внутренним классам в пространствах имен

namespace foo ;
$a = new \ stdClass ;

function test (\ ArrayObject $typehintexample = null ) {}

$a = \ DirectoryIterator :: CURRENT_AS_FILEINFO ;

// расширение внутреннего или глобального класса
class MyException extends \ Exception {}
?>

Как мне использовать функции классов в пространствах имен или константы в их собственном пространстве имен?

Пример #4 Доступ ко внутренним классам, функциям или константам в пространствах имен

namespace foo ;

class MyClass {}

// использование класса из текущего пространства имен
function test (MyClass $typehintexample = null ) {}
// другой способ использовать класс из текущего пространства имен
function test (\ foo \ MyClass $typehintexample = null ) {}

// расширение класса из текущего пространства имен
class Extended extends MyClass {}

// доступ к глобальной функции
$a = \ globalfunc ();

// доступ к глобальной константе
$b = \ INI_ALL ;
?>

Как такое имя как \my\name или \name преобразуется?

Имена, которые начинаются с \ всегда преобразуются к тому как они выглядят, т.е. \my\name - это на самом деле my\name , и \Exception - это Exception .

Пример #5 Абсолютные имена

namespace foo ;
$a = new \ my \ name (); // создает экземпляр класса "my\name"
echo \ strlen ("hi" ); // вызывает функцию "strlen"
$a = \ INI_ALL ; // переменной $a присваивается значение константы "INI_ALL"
?>

Как такое имя, как my\name преобразуется?

Имена, которые содержат обратный слеш, но не начинаются с него, такие как my\name

my другого имени, то этот синоним применяется к my в my\name .

my\name .

Пример #6 Полные имена

namespace foo ;
use blah \ blah as foo ;

$a = new my \ name (); // создает экземпляр класса "foo\my\name"
foo \ bar :: name (); // вызывает статический метод "name" в классе "blah\blah\bar"
my \ bar (); // вызывает функцию "foo\my\bar"
$a = my \ BAR ; // присваивает переменной $a значение константы "foo\my\BAR"
?>

Как неполное имя класса такое как name преобразуется?

Имена классов, которые не содержат обратный слеш, такие как name могут быть преобразованы двумя различными способами.

Если присутствует импортирующее выражение, которое создает синоним name другого имени, то применяется этот синоним.

В ином случае, текущее имя пространства имен становится префиксом к my\name .

Пример #7 Неполные имена классов

namespace foo ;
use blah \ blah as foo ;

$a = new name (); // создает экземпляр класса "foo\name"
foo :: name (); // вызывает статический метод "name" в классе "blah\blah"
?>

Как неполное имя функции или неполное имя константы такое как name преобразуется?

Имена функций или констант, которые не содержат обратного слеша, такие как name могут быть преобразованы двумя различными способами.

Сперва, текущее имя пространства имен становится префиксом к name .

Затем, если константа или функция name не существует в текущем пространстве имен, используется глобальная константа или функция name , если она существует.

Пример #8 Неполные имена функций или констант

namespace foo ;
use blah \ blah as foo ;

const FOO = 1 ;

function my () {}
function foo () {}
function sort (& $a )
{
\ sort ($a ); // вызывает глобальную функцию "sort"
$a = array_flip ($a );
return $a ;
}

My (); // вызывает "foo\my"
$a = strlen ("hi" ); // вызывает глобальную функцию "strlen", потому что "foo\strlen" не существует
$arr = array(1 , 3 , 2 );
$b = sort ($arr ); // вызывает функцию "foo\sort"
$c = foo (); // вызывает функцию "foo\foo" - импорт не применяется

$a = FOO ; // присваивает переменной $a значение константы "foo\FOO" - импорт не применяется
$b = INI_ALL ; // присваивает переменной $b значение глобальной константы "INI_ALL"
?>

Импортируемые имена не могут конфликтовать с классами, определенными в том же файле.

Следующие комбинации скриптов допустимы:

namespace my \ stuff ;
class MyClass {}
?>

namespace another ;
class thing {}
?>

namespace my \ stuff ;
include "file1.php" ;
include "another.php" ;


$a = new MyClass ; // создает экземпляр класса "thing" из пространства имен "another"
?>

Конфликт имен отсутствует даже несмотря на то, что класс MyClass существует внутри пространства имен my\stuff , потому что определение MyClass находится в отдельном файле. Однако следующий пример приводит к фатальной ошибке с конфликтом имен, потому что класс MyClass определен в том же файле, где находится оператор use.

namespace my \ stuff ;
use another \ thing as MyClass ;
class MyClass {} // фатальная ошибка: MyClass конфликтует с выражением импорта
$a = new MyClass ;
?>

Вложенные пространства имен недопустимы.

PHP не позволяет вложение пространств имен одно в другое

namespace my \ stuff {
namespace nested {
class foo {}
}
}
?>

Однако, сымитировать вложенные пространства имен так:

namespace my \ stuff \ nested {
class foo {}
}
?>

До PHP 5.6 ни функции, ни константы не могли быть импортированы с помощью оператора use .

До PHP 5.6 единственные элементы, которые подвержены действию оператора use - это пространства имен и имена классов. Для сокращения длинных имен констант или функций, заимпортируйте их содержимое в пространство имен.

namespace mine ;
use ultra \ long \ ns \ name ;

$a = name \ CONSTANT ;
name \ func ();
?>

Начиная с PHP 5.6 стало возможным импортирование и создание пседонимов для функций и имен констант.

Динамические имена пространств имен (идентификаторы, взятые в кавычки) должны экранировать символ обратного слеша.

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

Пример #9 Подводные камни при использовании имени пространства имен внутри строки с двойными кавычками

$a = "dangerous\name" ; // \n - это переход на новую строку внутри строки с двойными кавычками!
$obj = new $a ;

$a = "not\at\all\dangerous" ; // а тут нет проблем.
$obj = new $a ;
?>

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

Ссылаться на неопределенные константы, используя обратный слеш, нельзя. Выводится фатальная ошибка

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

Пример #10 Неопределенные константы

namespace bar ;
$a = FOO ; // выводит предупреждение: undefined constants "FOO" assumed "FOO";
$a = \ FOO ; // фатальная ошибка: undefined namespace constant FOO
$a = Bar \ FOO ; // фатальная ошибка: undefined namespace constant bar\Bar\FOO
$a = \ Bar \ FOO ; // фатальная ошибка: undefined namespace constant Bar\FOO
?>

Невозможно переопределить специальные константы, такие как NULL, TRUE, FALSE, ZEND_THREAD_SAFE или ZEND_DEBUG_BUILD

Любая попытка определить константу пространства имен, которая совпадает с названиями специальных встроенных констант, приведет к фатальной ошибке.

Пример #11 Неопределенные константы

namespace bar ;
const NULL = 0 ; // Фатальная ошибка;
const true = "stupid" ; // также фатальная ошибка;
// и т.д.
?>

7 years ago

There is a way to define a namespaced constant that is a special, built-in constant, using define function and setting the third parameter case_insensitive to false:

namespace foo ;
define (__NAMESPACE__ . "\NULL" , 10 ); // defines the constant NULL in the current namespace


?>

No need to specify the namespace in your call to define(), like it happens usually
namespace foo ;
define (INI_ALL , "bar" ); // produces notice - Constant INI_ALL already defined. But:

Define (__NAMESPACE__ . "\INI_ALL" , "bar" ); // defines the constant INI_ALL in the current namespace
var_dump (INI_ALL ); // will show string(3)"bar". Nothing unespected so far. But:

Define ("NULL" , 10 ); // defines the constant NULL in the current namespace...
var_dump (NULL ); // will show 10
var_dump (null ); // will show NULL
?>

If the parameter case_insensitive is set to true
namespace foo ;
define (__NAMESPACE__ . "\NULL" , 10 , true ); // produces notice - Constant null already defined
?>

3 years ago

When creating classes or calling static methods from within namespaces using variables, you need to keep in mind that they require the full namespace in order for the appropriate class to be used; you CANNOT use an alias or short name, even if it is called within the same namespace. Neglecting to take this into account can cause your code to use the wrong class, throw a fatal missing class exception, or throw errors or warnings.

In these cases, you can use the magic constant __NAMESPACE__, or specify the full namespace and class name directly. The function class_exists also requires the full namespace and class name, and can be used to ensure that a fatal error won"t be thrown due to missing classes.

Namespace Foo ;
class Bar {
public static function test () {
return get_called_class ();
}
}

namespace Foo \ Foo ;
class Bar extends \ Foo \ Bar {
}

Var_dump (Bar :: test ()); // string(11) "Foo\Foo\Bar"

$bar = "Foo\Bar" ;
var_dump ($bar :: test ()); // string(7) "Foo\Bar"

$bar = __NAMESPACE__ . "\Bar" ;
var_dump ($bar :: test ()); // string(11) "Foo\Foo\Bar"

$bar = "Bar" ;
var_dump ($bar :: test ()); // FATAL ERROR: Class "Bar" not found or Incorrect class \Bar used

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

Понятие константа и константы в PHP

Слово константа должно быть вам уже знакомо из математики:

“Математическая константа - величина, значение которой не меняется.”

Тоже самое и в PHP. Константа в PHP – это идентификатор, который служит для обозначения простого значения (строка, число какое-нибудь), которое не может изменяться в процессе выполнения кода.

Для объявления константы (присвоения ей значения) используется функция define . Пример объявления константы:

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

Имя константы должно начинаться с буквы или символа подчеркивания “_” и может состоять из букв, цифр и подчеркивания.

Рассмотрим простой пример использования константы:

В этом примере мы объявили константу и использовали ее в программе.

Для чего используются константы и не проще ли использовать переменные?

Как уже было сказано, константы не могут изменить своего значения в процессе выполнения программы. В константах обычно сохраняют постоянные параметры сайта, такие как реквизиты доступа к базе данных (хост, логин и пароль пользователя, имя базы данных), расположение сайта на диске и многие другие настройки.

Если мы будем использовать переменные, то скрип может случайно (в случаем ошибки) изменить значение переменной и будет работать не так как вы задумали.

Использование констант гарантирует, что то значение которое вы указали при объявлении константы останется неизменным.

Последнее обновление: 1.11.2015

Константы, как и переменные хранят определенное значение, только в отличие от переменных значение констант может быть установлено только один раз, и далее мы уже не можем его изменить. Например, определим числовую константу:

Для определения константы используется оператор define , который имеет следующую форму: define(string $name, string $value, bool $case_sen=false) . Параметр $name передает название константы, а параметр $value - ее значение. Третий необязательный параметр принимает логическое значение true или false . Если значение равно false, то при использовании константы будет учитываться ее регистр, если true - регистр не учитывается. В нашем случае третий параметр не использован, поэтому он по умолчанию равен false.

После определения константы мы можем ее использовать также, как и обычную переменную. Единственное исключение - мы не сможем изменить ее значение. Другое отличие от переменной - не надо использовать знак $ . То есть выражение NUMBER=33; работать не будет.

Предопределенные константы

Кроме создаваемых программистом констант в PHP имеется еще несколько встроенных констант:

    FILE__ : хранит полный путь и имя текущего файла

    LINE__ : хранит текущий номер строки, которую обрабатывает интерпретатор

    DIR__ : хранит каталог текущего файла

    FUNCTION__ : название обрабатываемой функции

    CLASS__ : название текущего класса

    METHOD__ : название обрабатываемого метода

    NAMESPACE__ : название текущего пространства имен

Например, выведем текущую выполняемую строку и название файла:

Проверка существования константы

Чтобы проверить, определена ли константы, мы можем использовать функцию bool defined(string $name) . Если константа $name определена, то функция будет возвращать значение true