Константа
Оригинальное название: constant
Коротко
Именованное значение, которое задаётся один раз и не меняется во время работы программы: лимит товаров на странице, адрес API, путь к папке загрузок.
Что такое «Константа»
Константы решают две задачи. Первая — понятность: MAX_UPLOAD_MB в коде говорит больше, чем голое число 20, а при изменении лимита правится одна строка, а не двадцать мест. Вторая — защита: значение нельзя случайно перезаписать по ходу выполнения, язык этого не позволит. В отличие от переменной, константа после объявления остаётся неизменной до конца работы скрипта.
По соглашению имена констант пишут заглавными буквами через подчёркивание, чтобы их сразу было видно в коде.
Константы в PHP
define('PRICE_LIST_URL', 'https://example.ru/price.xml'); // глобальная
const ITEMS_PER_PAGE = 24; // тоже глобальная
class Order {
public const STATUS_NEW = 'new'; // константа класса
public const STATUS_PAID = 'paid';
}
echo Order::STATUS_PAID;
define() работает в любом месте кода, в том числе внутри условий. const объявляется на верхнем уровне файла или в классе и обрабатывается на этапе компиляции. Повторно определить константу нельзя: PHP выдаст предупреждение, а значение останется прежним. Для набора связанных значений вроде статусов с PHP 8.1 удобнее перечисления.
Как настроить константы в WordPress
Многие настройки WordPress задаются константами в файле wp-config.php: WP_DEBUG включает режим отладки, DISALLOW_FILE_EDIT убирает редактор тем и плагинов из админки, WP_MEMORY_LIMIT поднимает лимит памяти. Важно место: константы должны стоять выше строки require_once ABSPATH . 'wp-settings.php';. Если определить их ниже, ядро уже загрузится со значениями по умолчанию. В 1С-Битрикс похожую роль играет файл dbconn.php, где, например, задаются BX_UTF и права на создаваемые файлы.
Константа в JavaScript — не значит неизменный объект
Ключевое слово const в JavaScript запрещает переприсвоить имя, но не менять содержимое: в объявленный через const массив можно добавлять элементы. Чтобы запретить изменения самого объекта, применяют Object.freeze(), причём заморозка поверхностная — вложенные объекты остаются изменяемыми.

