Константы - это идентификаторы простых значений. Исходя из их названия,
нетрудно понять, что их значение не может изменяться в ходе выполнения скрипта
(исключения представляют "волшебные"
константы, которые на самом деле не являются константами в полном смысле этого слова).
Имена констант чувствительны к регистру. По принятому соглашению, имена констант
всегда пишутся в верхнем регистре.
Имя константы должно соответствовать тем же правилам, которыми руководствуются
и другие имена в PHP. Правильное имя начинается с буквы или символа подчеркивания
и состоит из букв, цифр и подчеркиваний. Регулярное выражение для проверки правильности
имени константы выглядит так:
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
Замечание:
Понятие "буквы" здесь - это символы a-z, A-Z,
и другие символы с ASCII-кодами от 127 до 255 (0x7f-0xff).
Как и суперглобальные переменные,
константы доступны из любой области видимости. Вы можете использовать константы
в любом месте вашего скрипта, не обращая внимания на текущую область видимости.
Подробную информацию об областях видимости можно найти
здесь.
Вы можете определить константу с помощью функции
define(). После того, как константа определена,
ее значение не может быть изменено или аннулировано.
Константы могут содержать только скалярные данные
(логического, целого,
плавающего и строкового типов).
Получить значение константы можно, указав ее имя. В отличие от переменных,
вам не потребуется предварять имя константы символом
$.
Также вы можете использовать функцию constant() для
получения значения константы, если вы формируете имя константы динамически.
Используйте функцию get_defined_constants() для получения списка
всех объявленных констант.
Замечание:
Константы и (глобальные) переменные находятся в разном пространстве имен.
Это означает, что, например, TRUE и
$TRUE являются совершенно разными вещами.
Если вы используете неопределенную константу, PHP предполагает, что
вы имеете ввиду само имя константы, как если бы вы указали переменную типа
строка (CONSTANT и "CONSTANT"). При этом будет сгенерирована
ошибка типа E_NOTICE.
Смотрите также главу руководства, которая разъясняет, почему
$foo[bar] - это неправильно
(конечно, если вы перед этим не объявили bar как константу с
помощью define()). Если вы просто хотите проверить,
определена ли константа, используйте функцию defined().
Различия между константами и переменными:
У констант нет приставки в виде знака доллара ($);
Константы можно определить только с помощью функции
define(), а не присваиванием значения;
Константы могут быть определены и доступны в любом месте без учета
области видимости;
Константы не могут быть определены или аннулированы после первоначального объявления; и
Константы могут иметь только скалярные значения.
Пример 13-1. Определение констант
<?php define("CONSTANT", "Здравствуй, мир."); echo CONSTANT; // выводит "Здравствуй, мир." echo Constant; // выводит "Constant" и выводит предупреждениее. ?>
|
|