Синтаксис

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

При использовании ключевого слова const допускаются только скалярные выражения (bool, int, float и string) и константы array, содержащие только скалярные выражения. Можно определить константы с типом resource, но не рекомендуется, так как это может привести к неожиданным результатам.

Получить значение константы можно, указав ее имя. В отличие от переменных, вам не нужно предварять имя константы символом $. Также можно использовать функцию constant() для получения значения константы, если вы формируете имя константы динамически. Используйте функцию get_defined_constants() для получения списка всех определенных констант.

Замечание: Константы и (глобальные) переменные находятся в разных пространствах имен. Это означает, что, например, true и $TRUE в целом отличаются.

Если используется неопределенная константа, выбрасывается Error. До PHP 8.0.0 неопределенные константы интерпретировались как простое слово string, то есть (CONSTANT vs "CONSTANT"). Этот резервный вариант объявлен устаревшим с PHP 7.2.0, при этом будет сгенерирована ошибка уровня E_WARNING. До PHP 7.2.0 вместо этого выдавалась ошибка уровня E_NOTICE. Смотрите также главу руководства, которая разъясняет, почему $foo[bar] - это неправильно (если bar не является константой). Это не относится к (полностью) определенным константам, которые всегда будут выбрасывать Error, если они не определены.

Замечание: Чтобы проверить, установлена ли константа, используйте функцию defined().

Различия между константами и переменными:

  • У констант нет приставки в виде знака доллара ($);
  • Константы могут быть определены и доступны в любом месте без учета области видимости;
  • Константы не могут быть переопределены или удалены после первоначального объявления; и
  • Константы могут иметь только скалярные значения или массивы.

Пример #1 Определение констант

<?php
define
("CONSTANT""Здравствуй, мир.");
echo 
CONSTANT// выводит "Здравствуй, мир."
echo Constant// Выбросит ошибку: Неопределенная константа "Constant"
               // До PHP 8.0.0 выводит "Constant" и выдает предупреждение.
?>

Пример #2 Определение констант с помощью ключевого слова const

<?php
// Простое скалярное значение
const CONSTANT 'Здравствуй, мир.';

echo 
CONSTANT;

// Скалярное выражение
const ANOTHER_CONST CONSTANT.'; Прощай, мир.';
echo 
ANOTHER_CONST;

const 
ANIMALS = array('dog''cat''bird');
echo 
ANIMALS[1]; // выводит "cat"

// Массивы в константе
define('ANIMALS', array(
    
'dog',
    
'cat',
    
'bird'
));
echo 
ANIMALS[1]; // выводит "cat"
?>

Замечание:

В отличие от определения констант с помощью функции define(), константы, объявленные с помощью ключевого слова const должны быть объявлены в самой верхней области видимости, потому что они определяются при компилировании скрипта. Это означает, что их нельзя объявлять внутри функций, циклов, выражений if и блоков try/ catch.

Смотрите также