Curso de PHP
Constantes en PHP: define, const y constantes de clase
Por Víctor Peña · Publicado el

Hola, ¿cómo están? Continuando con el curso de PHP, hoy veremos las constantes: qué son, cómo se declaran y en qué se diferencian de las variables que vimos en la lección anterior.
¡Empecemos!
¿Qué es una constante?
Una constante es un contenedor cuyo valor no puede cambiar durante la ejecución del programa. Una vez definida, queda fija.
La diferencia con una variable es justo esa: la variable está pensada para cambiar, la constante para no hacerlo. Y esa restricción es una ventaja, porque protege los valores que no deberían tocarse por accidente.
Se usan para cosas como el IVA, el nombre de tu aplicación, la ruta base del proyecto o el número máximo de intentos de acceso.
Cómo declarar una constante
PHP ofrece dos formas.
Con define()
<?php
define('IVA', 0.13);
define('EMPRESA', 'Norvic Software');
echo IVA; // 0.13
echo EMPRESA; // Norvic Software
Con const
<?php
const IVA = 0.13;
const EMPRESA = 'Norvic Software';
Fíjate en dos detalles que llaman la atención al principio:
- Las constantes no llevan el signo
$, ni al declararlas ni al usarlas. - Por convención se escriben en mayúsculas, con guiones bajos para separar palabras:
MAX_INTENTOS,RUTA_BASE.
define o const: cuál usar
Ambas hacen esencialmente lo mismo, pero no son intercambiables en todos los casos.
const |
define() |
|
|---|---|---|
| Se evalúa en | Tiempo de compilación | Tiempo de ejecución |
| Dentro de condicionales | No | Sí |
| Dentro de clases | Sí | No |
| Nombre dinámico | No | Sí |
En la práctica: usa const por defecto, que es más legible y ligeramente más rápido. Recurre a define() cuando necesites crear la constante dentro de un if o cuando el nombre dependa de una variable:
<?php
// Esto solo es posible con define()
if ($entorno === 'produccion') {
define('DEBUG', false);
} else {
define('DEBUG', true);
}
Qué pasa si intentas cambiarla
Aquí está el punto de las constantes:
<?php
const IVA = 0.13;
IVA = 0.15; // Error fatal: no se puede reasignar
El programa se detiene. Es intencionado: si un valor debe ser fijo, que el lenguaje lo garantice es mejor que confiar en que nadie lo modifique por error.
Comprobar si una constante existe
<?php
if (defined('IVA')) {
echo "El IVA es " . IVA;
}
Útil sobre todo en archivos de configuración que pueden cargarse más de una vez.
Constantes de clase
Cuando lleguemos a la programación orientada a objetos verás que las clases también pueden tener sus propias constantes. Te lo adelanto para que la idea no te sorprenda después:
<?php
class Pedido
{
const ESTADO_PENDIENTE = 'pendiente';
const ESTADO_PAGADO = 'pagado';
const ESTADO_ENVIADO = 'enviado';
}
echo Pedido::ESTADO_PAGADO; // pagado
Esto es muchísimo mejor que escribir la cadena 'pagado' repartida por veinte archivos: si algún día cambia, la cambias en un solo sitio, y el editor te autocompleta el nombre.
Constantes mágicas
PHP trae unas constantes especiales que cambian según dónde las uses. Se reconocen por los guiones bajos dobles:
<?php
echo __LINE__; // el número de línea actual
echo __FILE__; // la ruta completa del archivo
echo __DIR__; // la carpeta del archivo
__DIR__ es la que más vas a usar, porque permite construir rutas que funcionan sin importar desde dónde se ejecute el script:
<?php
require __DIR__ . '/config/conexion.php';
Dentro de clases y funciones existen además __CLASS__, __FUNCTION__ y __METHOD__, muy útiles al registrar errores.
Constantes predefinidas del lenguaje
PHP ya trae definidas algunas que conviene conocer:
<?php
echo PHP_VERSION; // la versión de PHP en ejecución
echo PHP_EOL; // el salto de línea del sistema operativo
echo PHP_INT_MAX; // el entero más grande posible
echo DIRECTORY_SEPARATOR; // / en Linux, \ en Windows
PHP_EOL y DIRECTORY_SEPARATOR existen porque Windows y Linux no hacen las cosas igual. Usarlas evita que tu código funcione en tu máquina y falle en el servidor.
Un aviso importante sobre contraseñas
Es habitual ver esto en tutoriales:
<?php
define('DB_PASSWORD', 'mi_clave_secreta');
No guardes credenciales en el código. Si ese archivo llega a un repositorio, la contraseña queda expuesta, y sigue en el historial aunque después la borres.
La forma correcta es tenerlas en un archivo aparte, fuera del control de versiones, y leerlas desde ahí. Lo veremos cuando lleguemos a bases de datos; por ahora quédate con la idea, porque es de los errores más caros que existen. Lo tocamos también en cómo subir un proyecto a GitHub.
Para cerrar
Las constantes son la forma de decirle al lenguaje —y a quien lea tu código— que un valor no debe cambiar. Úsalas para configuración, valores fijos del negocio y estados; usa variables para todo lo que sí varía.
En la siguiente lección empezamos con los operadores.
Saludos y éxitos.
Norvic Software
Desarrollamos el software que tu empresa necesita
Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.
- Chatbots con Inteligencia Artificial
- Creación de agentes de IA
- Integración de IA en tus sistemas
- Desarrollo de software a medida
- Aplicaciones móviles iOS y Android
- Consultoría y asesoramiento técnico
Cotización sin costo · Respuesta directa por WhatsApp