W3docs

constant()

La función constant() en PHP se usa para obtener el valor de una constante por su nombre.

Qué hace constant()

La función constant() devuelve el valor de una constante cuyo nombre se suministra como string. Esta página explica su firma, por qué usarla en lugar de escribir la constante directamente, cómo funciona con constantes de clase y de enum, y los errores más comunes a tener en cuenta.

Si solo conoces el nombre de una constante en tiempo de ejecución — por ejemplo porque se construyó a partir de otra variable — constant() es la forma de consultarla. Para aprender cómo se crean las constantes en primer lugar, consulta PHP Constants y la función define().

Sintaxis y valor de retorno

constant(string $name): mixed
  • $name — el nombre de la constante como string. Para una constante de clase, usa la forma completamente calificada ClassName::CONSTANT.
  • Devuelve el valor de la constante. El tipo de retorno coincide con lo que la constante almacena (int, string, float, bool, array, o un caso de enum).

Si la constante no está definida, constant() lanza un Error (una excepción \Error) en PHP 8 y versiones posteriores. Comprueba primero con defined() cuando no estés seguro.

Ejemplo básico

php— editable, runs on the server

La constante PI se define con el valor 3.14159. constant("PI") recupera ese valor, que luego se usa para calcular el área de un círculo. La salida es:

The area of a circle with radius 5 is 78.53975.

¿Cuándo usarla?

En este ejemplo básico, constant("PI") hace exactamente lo mismo que escribir PI directamente — así que no hay razón para usarla aquí. La función tiene sentido solo cuando el nombre de la constante no se conoce hasta el tiempo de ejecución. Como no puedes escribir una variable donde va el nombre de una constante, constant() te permite resolver un nombre almacenado en un string:

<?php

const LEVEL_LOW  = 1;
const LEVEL_HIGH = 9;

$severity = 'HIGH';
$value = constant("LEVEL_$severity");

echo "Severity level: $value";

Esto imprime Severity level: 9. La constante elegida depende de $severity, algo que una referencia directa a LEVEL_HIGH nunca podría hacer.

Constantes de clase y de enum

constant() también resuelve constantes de clase y casos de enum cuando pasas la forma Clase::NOMBRE como string:

<?php

class Http
{
    const NOT_FOUND = 404;
}

echo constant('Http::NOT_FOUND'); // 404

Para un enum, constant() devuelve el objeto del caso correspondiente, por lo que puedes leer su value:

<?php

enum Suit: string
{
    case Hearts = 'H';
    case Spades = 'S';
}

$case = constant('Suit::Hearts');

echo $case->value; // H

Protegerse contra constantes no definidas

Pasar el nombre de una constante que no existe lanza un Error. Combina constant() con defined() para comprobarlo primero:

<?php

if (defined('TIMEOUT')) {
    echo constant('TIMEOUT');
} else {
    echo 'not defined';
}

Cuando TIMEOUT no ha sido definida, esto imprime not defined en lugar de fallar.

Errores comunes

  • Recibe un string, no la constante en sí. Escribir constant(PI) (sin comillas) intenta usar el valor de PI como nombre, lo cual casi nunca es lo que quieres.
  • Los nombres de constantes distinguen mayúsculas de minúsculas. constant('pi') no encontrará PI.
  • Los nombres no definidos lanzan una excepción. Protégete con defined() como se mostró arriba.
  • Úsala solo para nombres dinámicos. Si conoces el nombre de la constante al escribir el código, referénciala directamente — es más claro y más rápido.

Práctica

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