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