(PHP 4, PHP 5, PHP 7)
define — Определяет именованную константу
Определяет именованную константу во время выполнения.
name
Имя константы.
Замечание:
Возможно определить константы с помощью функции define() зарезервированными или даже некорректными именами, значения которых могут быть (только) получены через функцию constant(). Однако, делать это не рекомендуется.
value
Значение константы. В PHP 5 value
должно быть
скалярным значением (integer, float,
string, boolean или NULL
).
В PHP 7 также возможно использовать тип array.
Хотя возможно определить константы с типом resource, не рекомендуется это делать, поскольку может привести к непредсказуемому поведению.
case_insensitive
Если параметр установлен как TRUE
, то константа будет определена
без учета регистра. По умолчанию константа чувствительна к регистру, то
есть CONSTANT и Constant
представляют разные значения.
Начиная с PHP 7.3.0, определение нечувствительных к регистру констант объявлено устаревшим.
Замечание:
Нечувствительные к регистру константы хранятся в нижнем регистре.
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
Версия | Описание |
---|---|
7.3.0 |
Параметр case_insensitive объявлен устаревшим и будет удален в версии 8.0.0.
|
7.0.0 | Допустимы значения типа array. |
Пример #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)