define

Defines a named constant

&reftitle.description; `bool` `define` `string` `constant_name` `mixed` `value` `bool` `case_insensitive`&false;

Defines a named constant at runtime.

&reftitle.parameters;

`constant_name`

- The name of the constant.

  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.

`value`

- The value of the constant. In PHP 5, `value` must be a `scalar` value (`int`, `float`, `string`, `bool`, or &null;). In PHP 7, `array` values are also accepted.

  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.

  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.

  Case-insensitive constants are stored as lower-case.

&reftitle.returnvalues;

&return.success;

&reftitle.changelog;

&Version; | &Description;
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.
7.0.0 | `array` values are allowed.

&reftitle.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__);
    ?>

&example.outputs;

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

&reftitle.seealso;

- `defined`
- `constant`
- The section on Constants