Sintaxis

Se puede definir una constante usando la función define() o con la palabra reservada const fuera de la definición de una clase a partir PHP 5.3.0. Mientras que define() permite definir una constante con una expresión arbitraria, la palabra reservada const tiene retricciones que se resumen en el siguiente párrafo. Una vez que la constante está definida, no puede ser cambiada o redifinida.

Antes de PHP 5.6, al emplear la palabra reservada const, solamente los datos escalares (boolean, integer, float y string) pueder estar contenidos en constante. Desde PHP 5.6 en adelante, es posible definir una constante como una expresión escalar, y también es posible definir un array constante. Es posible definir constantes como un resource, pero debería evitarse, ya que podría ocasionar resultados inesperados.

Para obtener el valor de una constante solo es necesario especificar su nombre. A diferencia de las variables, no se debe prefijar una constante con el signo $. También se puede usar la función constant() para leer el valor de una constante si se desea obtener el valor de una constante de forma dinámica. Use get_defined_constants() para obtener una lista de todas las constantes definidas.

Nota: Las contantes y las variables (globales) se encuentran en un espacio de nombres distinto. Esto implica que por ejemplo TRUE y $TRUE son diferentes.

Si se usa una constante que todavía no está definida, PHP asume que se está refiriendo al nombre de la constante en si, igual que si fuera una string (CONSTANT vs "CONSTANT"). Cuando esto suceda, se mostrará un error de nivel E_NOTICE. Ver también la sección en el manual de porqué $foo[bar] es incorrecto (a no ser que primero define() bar como constante). Esto no se aplica a las constantes (completamente) cualificadas, lo cual emitirá un error fatal si no está definida. Si simplemente quiere 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 dólar ($), como prefijo.
  • Antes de PHP 5.3, las constantes solo podían ser definidas usando la función define(), y no por simple asignación.
  • Las constantes pueden ser definidas y accedidas desde cualquier sitio sin importar las reglas de acceso de variables.
  • Las constantes no pueden ser redefinidas o eliminadas una vez se han definido; y
  • Las constantes podrían evaluarse como valores escalares. A partir de PHP 5.6 es posible definir una constante de array con la palabra reservada const, y, a partir de PHP 7, las constantes de array también se pueden definir con define(). Se pueden utilizar arrays en expresiones escalares constantes (por ejemplo, const FOO = array(1,2,3)[0];), aunque el resultado final debe ser un valor de un tipo permitido.

Ejemplo #1 Definición de constantes

<?php
define
("CONSTANTE""Hola mundo.");
echo 
CONSTANTE// muestra "Hola mundo."
echo Constante// muestra "Constant" y se emite un aviso.
?>

Ejemplo #2 Definición de constantes usando el la palabra reservada const

<?php
// Funciona a partir de PHP 5.3.0
const CONSTANTE 'Hola Mundo';

echo 
CONSTANTE;

// Funciona a partir de PHP 5.6.0
const OTRA_CONSTANTE CONSTANTE.'; Adiós Mundo';
echo 
OTRA_CONSTANTE;

const 
ANIMALES = array('perro''gato''pájaro');
echo 
ANIMALES[1]; // muestra "gato"

// Funciona a partir de PHP 7
define('ANIMALES', array(
    
'perro',
    
'gato',
    
'pájaro'
));
echo 
ANIMALES[1]; // muestra "gato"
?>

Nota:

A diferencia de definir constantes usando define(), las constantes definidas con la palabra clave const deben declararse en el nivel superior del entorno de la aplicación porque se definen en tiempo de ejecución. Esto significa que no pueden declararse dentro de funciones, bucles, sentencias if o bloques try/ catch.

Vea también Constantes de clase.