(PHP 4, PHP 5, PHP 7, PHP 8)
define — Определяет именованную константу
Функция определяет именованную константу во время выполнения кода.
constant_name
Название константы.
Замечание:
Функция define() умеет определять константы с названиями, которые совпадают с зарезервированными словами или даже нарушают правила языка по именованию идентификаторов, при этом значение таких констант вернёт только функция constant(), но делать так не рекомендуют.
value
Значение константы.
Лучше не определять для констант значения с типом resource, хотя это и возможно, поскольку поведение таких констант непредсказуемо.
case_insensitive
Со значением true
функция определит константу
без учёта регистра. По умолчанию названия констант чувствительны к регистру,
поэтому константы CONSTANT
и Constant
представляют разные значения.
Начиная с PHP 7.3.0 определение нечувствительных к регистру констант
устарело.
Начиная с PHP 8.0.0 параметр принимает только значение false
,
передача true
выдаст предупреждение.
Замечание:
Нечувствительные к регистру константы хранятся в нижнем регистре.
Функция возвращает true
, если выполнилась успешно, или false
, если возникла ошибка.
Версия | Описание |
---|---|
8.1.0 |
Параметр value теперь принимает объекты.
|
8.0.0 |
При передаче значения true в параметр case_insensitive теперь возникает ошибка уровня E_WARNING .
Передача значения false по-прежнему возможна.
|
7.3.0 |
Параметр case_insensitive устарел, а в версии 8.0.0 параметр удалят.
|
Пример #1 Определение констант
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // Выводит "Hello world."
echo Constant; // Выводит "Constant" и выдаёт уведомление
define("GREETING", "Hello you.", true);
echo GREETING; // Выводит "Hello you."
echo Greeting; // Выводит "Hello you."
// Начиная с PHP 7
define('ANIMALS', array(
'собака',
'кошка',
'птица'
));
echo ANIMALS[1]; // Выводит "кошка"
?>
Пример #2 Определение констант, названия которых совпадают с зарезервированными словами
Пример иллюстрирует доступность определения для константы названия, которое совпадает с названием магической константы. Лучше не давать константам такие названия, поскольку такое поведение явно сбивает с толку.
<?php
var_dump(defined('__LINE__'));
var_dump(define('__LINE__', 'test'));
var_dump(constant('__LINE__'));
var_dump(__LINE__);
?>
Результат выполнения приведённого примера:
bool(false) bool(true) string(4) "test" int(5)