Учебник РНР
НазадГлава 34. Создание Переменных Вперёд

Создание констант

Zend поддерживает создание правильных констант (в отличие от регулярных переменных). Доступ к константам выполняется без префикса обычного знака dollar ($), и они доступны во всех областях видимости. Примеры - TRUE и FALSE.

Для создания ваших собственных констант вы можете использовать макросы из Таблицы 9.13. Все эти макросы создают константу со специфицированным именем и значением.

Вы можете также специфицировать для каждой константы флаги:

  • CONST_CS - Имя этой константы рассматривается с учётом регистра.

  • CONST_PERSISTENT - Это существующая константа, и она не будет "забыта", если текущий процесс будет остановлен.

Для использования этих флагов скомбинируйте их путём использования двоичного OR:

// регистрируется новая константа типа "long"
REGISTER_LONG_CONSTANT("NEW_MEANINGFUL_CONSTANT", 324, CONST_CS | CONST_PERSISTENT);

Есть два типа макросов - REGISTER_*_CONSTANT и REGISTER_MAIN_*_CONSTANT. Первый тип создаёт константы, привязанные к текущему модулю. Эти константы выгружаются из таблицы символов, как только модуль, зарегистрировавший эти константы, выгружается из памяти. Второй тип создаёт константы, которые остаются в таблице символов независимо от модуля.

Рисунок 34-10. Таблица 9.13. Макросы для создания констант
МакросОписание

REGISTER_LONG_CONSTANT(name, value, flags)

REGISTER_MAIN_LONG_CONSTANT(name, value, flags)

Регистрирует новую константу типа long.

REGISTER_DOUBLE_CONSTANT(name, value, flags)

REGISTER_MAIN_DOUBLE_CONSTANT(name, value, flags)

Регистрирует новую константу типа double.

REGISTER_STRING_CONSTANT(name, value, flags)

REGISTER_MAIN_STRING_CONSTANT(name, value, flags)

Регистрирует новую константу типа string. Специфицированная строка обязана размещаться во внутренней памяти Zend.

REGISTER_STRINGL_CONSTANT(name, value, length, flags)

REGISTER_MAIN_STRINGL_CONSTANT(name, value, length, flags)

Регистрирует новую константу типа string. Длина строки устанавливается явно в length. Специфицированная строка обязана размещаться во внутренней памяти Zend.

Назад Оглавление Вперёд
Макросы для автоматического создания глобальных переменных Вверх Дублирование содержимого переменных: конструктор Copy