Константы, как и переменные хранят определенное значение, только в отличие от переменных значение констант может быть установлено только один раз, и далее мы уже не можем его изменить. Константы обычно определяются для хранения значений, которые должны оставаться неизменными на протяжении всей работы скрипта.
Для определения константы применяется оператор const, при этом в названии константы знак доллара $ (в отличие от переменных) не используется.
<?php const PI = 3.14; echo PI; ?>
Обычно названия констант используют заглавные символы, но это условность.
После определения константы мы можем ее использовать также, как и обычную переменную.
PHP позволяет устанавливать значения констант на основе вычисляемых выражений:
<?php const PI = 2.1415 + 1; echo PI; // 3.1415 ?>
Единственное исключение - мы не сможем изменить значение константы. То есть выражение PI = 3.1415;
, которое должно изменить значение константы, не срабатает.
Также для определения константы может применяться функция define(), которая имеет следующую форму:
define(string $name, string $value)
Параметр $name
передает название константы, а параметр
$value
- ее значение. Значение константы может представлять тип int, float, string, bool, null
или массивы.
Например, определим числовую константу:
<?php define("NUMBER", 22); echo NUMBER; // 22 ?>
Кроме создаваемых программистом констант в PHP имеется еще несколько так называемых "магических" констант, которые есть в языке по умолчанию:
__FILE__: хранит полный путь и имя текущего файла
__LINE__: хранит текущий номер строки, которую обрабатывает интерпретатор
__DIR__: хранит каталог текущего файла
__FUNCTION__: название обрабатываемой функции
__CLASS__: название текущего класса
__TRAIT__: название текущего трейта
__METHOD__: название обрабатываемого метода
__NAMESPACE__: название текущего пространства имен
::class/span>: полное название текущего класса
Например, выведем текущую выполняемую строку и название файла:
<?php echo "Cтрока " . __LINE__ . " в файле " . __FILE__; ?>
Чтобы проверить, определена ли константы, мы можем использовать функцию bool defined(string $name).
Если константа $name
определена, то функция будет возвращать значение true
:
<?php const PI = 3.14; if (!defined("PI")) define("PI", 3.14); else echo "Константа PI уже определена"; ?>