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.