W3docs

Constantes en PHP: Una guía detallada

Una constante en PHP es un valor que no puede cambiarse una vez definido. Son esenciales en la programación y juegan un papel crucial en el mantenimiento del

Una constante en PHP es un valor con nombre que no puede cambiarse una vez definido. A diferencia de las variables, las constantes no llevan el prefijo $, están disponibles automáticamente en todo el script (sin reglas de ámbito), y cualquier intento de reasignarlas se ignora o genera un error. Son ideales para valores fijos como configuraciones, claves de API, números de versión y límites matemáticos.

Este capítulo explica cómo definir constantes de dos formas distintas, las diferencias prácticas entre ellas, las constantes mágicas, las constantes de clase y los errores comunes que suelen cometerse.

Definición de una constante

PHP ofrece dos herramientas: la función define() y la palabra clave const. Ambas reciben un nombre y un valor.

<?php
// Using define()
define("SITE_NAME", "W3docs");

// Using the const keyword
const VERSION = "8.4";

echo SITE_NAME; // W3docs
echo PHP_EOL;
echo VERSION;   // 8.4

Por convención, los nombres de las constantes se escriben en MAYÚSCULAS, aunque PHP no lo exige. Un nombre válido comienza con una letra o guion bajo, seguido de letras, números o guiones bajos — igual que un nombre de variable, pero sin el $.

Nótese que se hace referencia a una constante por su nombre simple (SITE_NAME), sin el $. Las constantes distinguen entre mayúsculas y minúsculas: SITE_NAME y site_name son dos constantes diferentes.

const vs define()

Ambas producen el mismo tipo de constante, pero se comportan de forma diferente a nivel del lenguaje. Saber cuál usar evita errores sutiles:

constdefine()
Se evalúa enTiempo de compilaciónTiempo de ejecución
Puede usarse dentro de if/bucles/funcionesNo (solo en nivel superior / cuerpo de clase)
El nombre puede construirse dinámicamenteNoSí (es solo un argumento string)
Funciona dentro de clasesSí (define una constante de clase)No

Dado que define() se ejecuta en tiempo de ejecución, es la opción adecuada cuando una constante solo debe existir bajo ciertas condiciones:

<?php
if (!defined("DEBUG")) {
    define("DEBUG", true);
}

// define() can build the name dynamically — const cannot:
$key = "MAX_USERS";
define($key, 100);
echo MAX_USERS; // 100

const, evaluada en tiempo de compilación, es más rápida y la opción convencional para constantes de nivel superior en código moderno.

Verificar y leer constantes

Antes de usar una constante cuya existencia sea incierta, verifícala con defined(). Para obtener el valor de una constante cuando solo tienes su nombre como string, usa constant():

<?php
define("TIMEOUT", 30);

if (defined("TIMEOUT")) {
    echo constant("TIMEOUT"); // 30
}

Las constantes pueden almacenar arrays

Desde PHP 7, las constantes no se limitan a escalares (int, float, string, bool) — también pueden almacenar arrays. Esto es útil para tablas de búsqueda fijas:

<?php
const ALLOWED_ROLES = ["admin", "editor", "viewer"];

echo ALLOWED_ROLES[1]; // editor

Consulta Tipos de datos en PHP para ver qué puede almacenar cada tipo de valor.

Constantes mágicas

PHP incluye constantes mágicas — nombres predefinidos cuyo valor cambia según el lugar donde se usan. Se escriben con dobles guiones bajos al inicio y al final:

ConstanteSe resuelve a
__LINE__El número de línea actual
__FILE__La ruta completa del archivo
__DIR__El directorio del archivo
__FUNCTION__El nombre de la función actual
__CLASS__El nombre de la clase actual
__METHOD__El nombre del método de la clase
<?php
function greet() {
    echo "Called from: " . __FUNCTION__ . PHP_EOL;
    echo "On line: " . __LINE__ . PHP_EOL;
}
greet();

Constantes de clase

Las constantes declaradas dentro de una clase pertenecen a la clase en sí, no a ninguna instancia. Se declaran con const y se accede a ellas con el operador :: (resolución de ámbito):

<?php
class Circle {
    const PI = 3.14159;

    public function area(float $r): float {
        return self::PI * $r * $r;
    }
}

echo Circle::PI;            // 3.14159
echo PHP_EOL;
echo (new Circle)->area(2); // 12.56636

Para una visión más detallada, lee Constantes de clase en PHP.

Constantes vs variables

Las dos cumplen funciones diferentes. Una variable almacena datos que se espera que cambien; una constante fija un valor en su lugar. Las diferencias clave:

VariableConstante
Prefijo$nombreNOMBRE (sin signo)
ReasignableNo
ÁmbitoLocal salvo que se haga globalGlobal automáticamente
Distingue mayúsculas/minúsculas

Usa una constante siempre que un valor deba mantenerse fijo durante toda la ejecución — flags de configuración, límites, strings fijos — para que no pueda sobrescribirse accidentalmente en otro lugar.

Errores comunes

  • Redefinir una constante. Llamar a define() dos veces con el mismo nombre genera una advertencia y conserva el primer valor; redeclarar con const es un error fatal. Las constantes son de escritura única.
  • Olvidar que el $ no existe. Escribir echo $SITE_NAME busca una variable indefinida, no tu constante.
  • Constantes indefinidas. En PHP 8+, usar una constante de tipo bare-word no definida lanza un Error. Siempre usa define() antes de usarla, o protégete con defined().

Conclusión

Las constantes de PHP ofrecen una forma segura de almacenar valores que nunca deben cambiar: defínelas con const para valores ordinarios de nivel superior o con define() cuando necesites lógica en tiempo de ejecución o un nombre dinámico, agrupa datos fijos en constantes de array o de clase, y apóyate en las constantes mágicas integradas para depuración. Bien utilizadas, mantienen la configuración en un solo lugar y evitan reasignaciones accidentales.

Práctica

Práctica
¿Cuáles son las características de las constantes PHP?
¿Cuáles son las características de las constantes PHP?
Was this page helpful?