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