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;
// Expresión escalar
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;
const ANIMALS = array('dog', 'cat', 'bird');
echo ANIMALS[1]; // muestra "cat"
// Arrays constantes
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // 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.