W3docs

define()

Aprende cómo PHP define() crea constantes, en qué se diferencia de const, qué valores acepta y los errores comunes sobre mayúsculas y constantes array.

Qué hace la función define()

La función define() crea una constante — un valor con nombre que no puede modificarse una vez establecido. A diferencia de una variable, una constante no tiene prefijo $, es global en todo el script (incluso dentro de funciones), y cualquier intento de redefinirla genera una advertencia en lugar de sobrescribir el valor silenciosamente.

Usa define() cuando quieras una única fuente de verdad para un valor que nunca debería cambiar en tiempo de ejecución: un indicador de configuración, un número de versión, una ruta de archivo o un endpoint de API.

Sintaxis

define(string $name, mixed $value, bool $case_insensitive = false): bool
  • $name — el nombre de la constante. Por convención se escribe en mayúsculas con guiones bajos (MAX_USERS), pero cualquier identificador válido funciona.
  • $value — el valor a almacenar. Los escalares (int, float, string, bool) y null siempre han sido admitidos; los array pasaron a ser valores válidos en PHP 7.0.
  • $case_insensitive (opcional) — históricamente, pasar true permitía leer la constante con cualquier combinación de mayúsculas y minúsculas. Este indicador está obsoleto desde PHP 7.3 y eliminado en PHP 8.0, así que omítelo y trata los nombres de constantes como sensibles a mayúsculas.

define() devuelve true en caso de éxito y false en caso de error.

Un ejemplo básico

php— editable, runs on the server

Aquí define() crea una constante llamada GREETING que contiene Hello, world!, y luego echo la imprime por su nombre — sin $ y sin comillas.

Almacenar un array en una constante

Desde PHP 7.0, una constante puede contener un array, lo que resulta útil para tablas de búsqueda fijas o listas de opciones:

<?php
define("ROLES", ["admin", "editor", "viewer"]);
echo ROLES[1]; // editor
?>

Verificar antes de usar una constante

Leer una constante no definida es un error en PHP 8.0+. Protégete con defined() para que tu código degrade con gracia:

<?php
if (!defined("APP_ENV")) {
    define("APP_ENV", "production");
}
echo APP_ENV; // production
?>

define() vs. const

PHP ofrece dos maneras de declarar una constante, y no son intercambiables:

Característicadefine()const
Cuándo se ejecutaEn tiempo de ejecuciónEn tiempo de compilación
Uso condicional / en bucleSí — puede estar dentro de if/forNo — debe estar al nivel superior o en una clase
Nombre dinámicoSí — el nombre puede ser una variableNo — el nombre es fijo
Constantes de claseNo

Usa define() cuando el nombre o el valor se calculan, o cuando la declaración debe ser condicional. Usa const para constantes simples que siempre se declaran y para constantes de clase.

Errores comunes

  • Sin $ y sin comillas al leer. Escribe echo GREETING;, no echo $GREETING; ni echo "GREETING";.
  • Redefinir genera una advertencia, no sobrescribe. Un segundo define("GREETING", ...) emite una advertencia y el valor original permanece.
  • Los nombres distinguen mayúsculas de minúsculas. GREETING y Greeting son dos constantes distintas ahora que el indicador de insensibilidad a mayúsculas ha desaparecido.
  • Define una vez, al principio. Dado que las constantes son globales y permanentes, establécelas cerca del inicio de tu script o en un archivo de configuración.

Conclusión

define() es la forma de crear en tiempo de ejecución un valor global e inmutable en PHP. Combínalo con defined() para evitar advertencias de redefinición, prefiere const para constantes fijas en tiempo de compilación y de clase, y consulta PHP Constants para una visión más amplia.

Práctica

Práctica
En PHP, ¿cómo se usa la función 'define'?
En PHP, ¿cómo se usa la función 'define'?
Was this page helpful?