define
(PHP 4, PHP 5, PHP 7, PHP 8)
Defines a named constant
Description
Defines a named constant at runtime.
Parameters
constant_nameThe name of the constant.
NoteIt is possible to
define()constants with reserved or even invalid names, whose value can (only) be retrieved withconstant(). However, doing so is not recommended.define()takes the name as an ordinarystringand does not resolve it against the current namespace. Insidenamespace My\Namespace;,define('MYCONST', 1)therefore definesMYCONSTin the global namespace, silently and without error. To place the constant in a namespace, the namespace must be part of the name, written without a leading namespace separator, as indefine('My\Namespace\MYCONST', 1)ordefine(__NAMESPACE__ . '\MYCONST', 1). Unlikedefined()andconstant(),define()does not strip a leading separator:define('\My\Namespace\MYCONST', 1)returns true but creates a constant that can never be retrieved. Because the name is a plain string, aliases introduced byusestatements are not applied to it. In a double-quoted string the namespace separators must be escaped, as in"My\\Namespace\\MYCONST".valueThe value of the constant.
WarningWhile it is possible to define
resourceconstants, it is not recommended and may cause unpredictable behavior.case_insensitiveIf set to true, the constant will be defined case-insensitive. The default behavior is case-sensitive; i.e.
CONSTANTandConstantrepresent different values.WarningDefining case-insensitive constants is deprecated as of PHP 7.3.0. As of PHP 8.0.0, only false is an acceptable value, passing true will produce a warning.
NoteCase-insensitive constants are stored as lower-case.
Return Values
Success
Changelog
| Version | Description |
|---|---|
| 8.1.0 | value can now be an object. |
| 8.0.0 | Passing true to case_insensitive now emits an E_WARNING. Passing false is still allowed. |
| 7.3.0 | case_insensitive has been deprecated and will be removed in version 8.0.0. |
Examples
Defining Constants
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
define("GREETING", "Hello you.", true);
echo GREETING; // outputs "Hello you."
echo Greeting; // outputs "Hello you."
// Works as of PHP 7
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // outputs "cat"
?>Constants with Reserved Names
This example illustrates the possibility to define a constant with the same name as a magic constant. Since the resulting behavior is obviously confusing, it is not recommended to do this in practise, though.
<?php
var_dump(defined('__LINE__'));
var_dump(define('__LINE__', 'test'));
var_dump(constant('__LINE__'));
var_dump(__LINE__);
?>The above example will output:
bool(false)
bool(true)
string(4) "test"
int(5)See Also
defined()constant()- The section on Constants