php8.5
Home/ Manual/ misc / functions/ define

define

PHP function Edit on GitHub ✎

(PHP 4, PHP 5, PHP 7, PHP 8)

Defines a named constant

Description

define(string $constant_name, mixed $value, bool $case_insensitive = false): bool

Defines a named constant at runtime.

Parameters

constant_name

The name of the constant.

Note

It is possible to define() constants with reserved or even invalid names, whose value can (only) be retrieved with constant(). However, doing so is not recommended.

define() takes the name as an ordinary string and does not resolve it against the current namespace. Inside namespace My\Namespace;, define('MYCONST', 1) therefore defines MYCONST in 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 in define('My\Namespace\MYCONST', 1) or define(__NAMESPACE__ . '\MYCONST', 1). Unlike defined() and constant(), 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 by use statements are not applied to it. In a double-quoted string the namespace separators must be escaped, as in "My\\Namespace\\MYCONST".

value

The value of the constant.

Warning

While it is possible to define resource constants, it is not recommended and may cause unpredictable behavior.

case_insensitive

If set to true, the constant will be defined case-insensitive. The default behavior is case-sensitive; i.e. CONSTANT and Constant represent different values.

Warning

Defining 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.

Note

Case-insensitive constants are stored as lower-case.

Return Values

Success

Changelog

VersionDescription
8.1.0value can now be an object.
8.0.0Passing true to case_insensitive now emits an E_WARNING. Passing false is still allowed.
7.3.0case_insensitive has been deprecated and will be removed in version 8.0.0.

Examples

Defining Constants

php
<?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
<?php
var_dump(defined('__LINE__'));
var_dump(define('__LINE__', 'test'));
var_dump(constant('__LINE__'));
var_dump(__LINE__);
?>

The above example will output:

output
bool(false)
bool(true)
string(4) "test"
int(5)

See Also

Source: reference/misc/functions/define.xml · from the official PHP manual (php/doc-en)