Синтаксис
Вы можете определить константу с помощью функции define() или с помощью ключевого слова const вне объявления класса с PHP 5.3.0. В то время как define() позволяет задать константу через выражение, конструкция const ограничена как описано в следующем параграфе. После того, как константа определена, ее значение не может быть изменено или аннулировано.
Если использована конструкция const, константы могут содержать только скалярные данные (типы boolean, integer, float и string). С PHP 5.6 возможно определить константу как скалярное выражение, а также определить константу с типом array. Можно определить константы с типом resource, но не рекомендуется, так как это может привести к неожиданным результатам.
Получить значение константы можно, указав ее имя. В отличие от переменных, вам не нужно предварять имя константы символом $. Также вы можете использовать функцию constant() для получения значения константы, если вы формируете имя константы динамически. Используйте функцию get_defined_constants() для получения списка всех определенных констант.
Замечание:
Константы и (глобальные) переменные находятся в разных пространствах имен. Это означает, что, например,
TRUE
и $TRUE в целом отличаются.
Если вы используете неопределенную константу, PHP предполагает, что вы имеете ввиду само имя константы, как если бы вы указали литерал типа string (CONSTANT вместо "CONSTANT"). При этом будет сгенерирована ошибка уровня E_NOTICE. Смотрите также главу руководства, которая разъясняет, почему $foo[bar] - это неправильно (конечно, если вы перед этим не объявили bar как константу с помощью define()). Это не относится к (полностью) определенным константам, которые вызовут фатальную ошибку, если они не определены. Если вы просто хотите проверить, определена ли константа, используйте функцию defined().
Различия между константами и переменными:
- У констант нет приставки в виде знака доллара ($);
- До PHP 5.3 константы можно определить только с помощью функции define(), а не присваиванием значения;
- Константы могут быть определены и доступны в любом месте без учета области видимости;
- Константы не могут быть переопределены или удалены после первоначального объявления; и
- Константы могут иметь только скалярные значения. С версии PHP 5.6 возможно задать константу массивом, используя const, а с PHP 7 константы с массивом можно определить с помощью define(). Вы можете использовать массивы при задании констант, если результат выражения будет допустимого типа. Например, const FOO = array(1,2,3)[0];.
Пример #1 Определение констант
<?php
define("CONSTANT", "Здравствуй, мир.");
echo CONSTANT; // выводит "Здравствуй, мир."
echo Constant; // выводит "Constant" и предупреждение.
?>
Пример #2 Определение констант с помощью ключевого слова const
<?php
// Работает, начиная с версии PHP 5.3.0
const CONSTANT = 'Здравствуй, мир.';
echo CONSTANT;
// Работает, начиная с версии PHP 5.6.0
const ANOTHER_CONST = CONSTANT.'; Прощай, мир.';
echo ANOTHER_CONST;
const ANIMALS = array('dog', 'cat', 'bird');
echo ANIMALS[1]; // выводит "cat"
// Работает в PHP 7
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // выводит "cat"
?>