Константы
Содержание
Константа — идентификатор, или имя, для простого значения. Как подсказывает название,
это значение нельзя изменять во время работы скрипта
(кроме магических констант,
которые на самом деле не относятся к константам).
Константы чувствительны к регистру. По принятому соглашению, названия констант
записывают в верхнем регистре.
Замечание:
До PHP 8.0.0 константам, которые определяли функцией define(),
разрешалось быть нечувствительными к регистру.
Названия констант подчиняются тем же правилам именования, которым следуют
другие PHP-идентификаторы. Правильное название начинается с буквы или символа подчёркивания,
за которым следует любое количество букв, цифр и символов подчёркивания. Регулярное
выражение для проверки корректности имени константы выглядит так:
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Функция define() умеет определять константы
с названиями, которые совпадают с зарезервированными словами
или даже нарушают правила языка по именованию идентификаторов,
при этом значение таких констант вернёт
только функция constant(), но делать так не рекомендуют.
Пример #1 Правильные и неправильные названия констант
<?php
// Правильные названия констант
define("FOO", "что-то");
define("FOO2", "что-то ещё");
define("FOO_BAR", "что-то большее");
// Неправильные названия констант
define("2FOO", "что-то");
// Это допустимое объявление, но константы лучше так не называть:
// константа нарушит работу скрипта, если в PHP зарегистрируют магическую константу
// с таким названием
define("__FOO__", "что-то");
?>
Замечание:
Понятие «буквы» здесь — символы a-z, A-Z,
и другие символы с ASCII-кодами от 128 до 255 (0x80-0xff).
Как и superglobals, константы доступны из любой области видимости.
Константы разрешается использовать из любого места скрипта независимо от области видимости.
Дополнительную информация об области видимости даёт раздел руководства
«Область видимости переменной».
Замечание:
Начиная с PHP 7.1.0 константам класса доступны объявления видимости — защищённая
или закрытая, которые делают константу доступной только в иерархической области видимости
класса, в котором константа определена.