Константы в PHP
Константа хранит значение почти как переменная, но с одним важным отличием: после определения её нельзя ни изменить, ни отменить.
В PHP есть два способа создать константу: функция define() и ключевое слово const.
Для имён действует простое правило: они начинаются с буквы или подчёркивания и не содержат знака $, который используют переменные.
Функция define() в PHP
define() создаёт константу во время выполнения.
Константа всегда попадает в глобальную область видимости, даже если define() вызывается внутри условного блока (if/else, циклы, функции). Однако создавать константы классов эта функция не может.
Она принимает два параметра:
- CONSTANT_NAME — как называется константа (с учётом регистра)
- value — что хранит константа
Создание константы с помощью define()
Здесь define() создаёт константу с именем «GREETING», а echo выводит её. Обратите внимание на отсутствие знака $:
Вывод: PHP-скрипт
<?php
define("GREETING", "Добро пожаловать в PromptCookbook!");
echo GREETING;
?>
Константа внутри функции
Константа создаётся внутри myTest(), но код вне функции всё равно может её вывести:
Вывод: PHP-скрипт
<?php
function myTest() {
define("GREETING", "Добро пожаловать в PromptCookbook!");
}
myTest();
echo GREETING;
?>
Синтаксис define()
Это общая форма вызова define():
<?php
define(CONSTANT_NAME, value);
?>
Ключевое слово const в PHP
С const константа создаётся уже во время компиляции.
Именно поэтому она должна находиться в области видимости верхнего уровня. Так использовать const внутри функций, циклов, операторов if/else или блоков try/catch нельзя.
В отличие от define(), этот способ работает и для констант классов.
Имена здесь тоже чувствительны к регистру.
Создание константы с помощью const
Та же константа «GREETING», на этот раз созданная с помощью const:
Вывод: PHP-скрипт
<?php
const GREETING = "Добро пожаловать в PromptCookbook!";
echo GREETING;
?>
Синтаксис const
Это общая форма объявления const:
<?php
const CONSTANT_NAME = value;
?>
Константы-массивы в PHP
Константа не обязана хранить только одно значение. И define(), и const принимают также массивы.
Создание констант-массивов
Каждый способ создаёт по одной константе-массиву, а элементы читаются по индексу, как в любом массиве:
Вывод: PHP-скрипт
<?php
// Использование define()
define("CARS", array("Volvo", "BMW", "Toyota"));
echo CARS[0];
// Использование const
const ANIMALS = array("Cat", "Dog", "Horse");
echo ANIMALS[1];
?>