## Sintaxis

Las constantes pueden definirse usando la palabra clave `const` o usando la función define(). Mientras que define() permite definir una constante con una expresión arbitraria, la palabra clave `const` tiene restricciones como se describe en el siguiente párrafo. Una vez definida, una constante no puede ser modificada ni eliminada.

Al usar la palabra clave `const`, solo se aceptan expresiones escalares (bool, int, float y string) y arrays constantes que contengan únicamente expresiones escalares. Es posible definir constantes como resource, pero debe evitarse, ya que puede causar resultados inesperados.

El valor de una constante se obtiene simplemente especificando su nombre. A diferencia de las variables, una constante no va precedida de un signo `$`. También es posible usar la función constant() para leer el valor de una constante si su nombre se obtiene dinámicamente. Use get_defined_constants() para obtener una lista de todas las constantes definidas.

> Nota: Las constantes y las variables (globales) se encuentran en espacios de nombres diferentes. Esto implica que, por ejemplo, `true` y $TRUE son generalmente diferentes.

Si se usa una constante no definida, se lanza un Error. Antes de PHP 8.0.0, las constantes no definidas se interpretaban como una cadena (string) sin comillas, es decir (CONSTANT vs "CONSTANT"). Este comportamiento está obsoleto desde PHP 7.2.0, y se emite un error de nivel `E_WARNING` cuando ocurre. Antes de PHP 7.2.0, se emitía un error de nivel E_NOTICE. Consulte también la entrada del manual sobre por qué $foo[bar] es incorrecto (a menos que `bar` sea una constante). Esto no se aplica a las constantes (totalmente) cualificadas, que siempre lanzarán un Error si no están definidas.

> Nota: Para comprobar si una constante está definida, use la función defined().

Estas son las diferencias entre constantes y variables:

- Las constantes no llevan el signo de dólar (`$`) delante;
- Las constantes pueden definirse y accederse desde cualquier lugar sin importar las reglas de ámbito de las variables;
- Las constantes no pueden redefinirse ni eliminarse una vez establecidas; y
- Las constantes solo pueden evaluarse a valores escalares o arrays.

Ejemplo #1 Definición de constantes

    <?php
    define("CONSTANT", "Hello world.");
    echo CONSTANT; // muestra "Hello world."
    echo Constant; // Lanza un Error: Undefined constant "Constant"
                   // Antes de PHP 8.0.0, muestra "Constant" y emite una advertencia.

Ejemplo #2 Definición de constantes usando la palabra clave `const`

    <?php
    // Valor escalar simple
    const CONSTANT = 'Hello World';

    echo CONSTANT . "\n";

    // Expresión escalar
    const ANOTHER_CONST = CONSTANT . '; Goodbye World';
    echo ANOTHER_CONST . "\n";

    const ANIMALS = array('dog', 'cat', 'bird');
    echo ANIMALS[1] . "\n"; // muestra "cat"

    // Arrays constantes
    define('ANIMALS_DEF', array(
        'dog',
        'cat',
        'bird'
    ));
    echo ANIMALS_DEF[1] . "\n"; // muestra "cat"

> Nota:

> A diferencia de la definición de constantes con define(), las constantes definidas con la palabra clave `const` deben declararse en el ámbito de nivel superior porque se definen en tiempo de compilación. Esto significa que no pueden declararse dentro de funciones, bucles, instrucciones `if` o bloques `try`/`catch`.

### Ver también

- Constantes de clase

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open