PHP include: diferencias con require e include_once
Aprende qué hace include en PHP, cómo incluir archivos y cuándo usar include, include_once, require o require_once.
Actualizado el
include en PHP sirve para cargar el contenido de un archivo dentro de otro. Se usa mucho para reutilizar partes comunes de una web, como el menú, el pie de página o funciones compartidas.
Además, include es una construcción del lenguaje, no una función: los paréntesis no son necesarios y include('archivo.php') se comporta igual que include 'archivo.php'.
Sintaxis de include
include 'archivo.php';Cuando PHP encuentra esa línea, ejecuta el contenido de archivo.php en ese punto del script.
Ejemplo básico
Archivo saludo.php:
<?php
echo 'Hola, bienvenido a mi sitio web.';Archivo index.php:
<!doctype html>
<html lang="es">
<body>
<?php include 'saludo.php'; ?>
<p>Este es el contenido de la página principal.</p>
</body>
</html>Al abrir index.php, PHP mostrará primero el contenido de saludo.php y después el párrafo.
Para qué se usa include
include es útil cuando tienes código que se repite en varias páginas:
- Menús de navegación.
- Cabeceras y pies de página.
- Archivos de configuración.
- Funciones auxiliares.
- Bloques HTML reutilizables.
Por ejemplo, puedes tener un header.php y cargarlo en todas tus páginas:
<?php include __DIR__ . '/partials/header.php'; ?>Así, si cambias el menú, solo tienes que editar un archivo.
Con las rutas relativas hay que tener cuidado: una ruta como 'partials/header.php' se resuelve según el contexto de ejecución y puede apuntar a un archivo distinto del que esperas. __DIR__ representa el directorio del archivo actual, así que concatenarlo con la ruta produce una referencia estable:
include __DIR__ . '/partials/header.php';
require __DIR__ . '/../config.php';include, include_once, require y require_once
PHP tiene varias formas de incluir archivos:
| Construcción | Si el archivo falla | Si ya fue incluido | Retorno |
|---|---|---|---|
include | Emite E_WARNING y devuelve false; el script puede continuar | Se vuelve a incluir | 1 si termina normalmente o el valor declarado con return |
include_once | Como include | No se incluye otra vez | true cuando ya estaba incluido |
require | Lanza Error y detiene el flujo normal si no se captura | Se vuelve a incluir | 1 si termina normalmente o el valor declarado con return |
require_once | Como require | No se incluye otra vez | true cuando ya estaba incluido |
La explicación antigua del fallo de require como “error fatal” es imprecisa: en PHP actual se lanza un Error, que detiene el flujo normal si no se captura.
Un archivo incluido también puede devolver un valor con return, y include o require devuelven ese valor como resultado de la expresión. Por ejemplo, en configuracion.php:
<?php
return ['entorno' => 'produccion'];Al incluirlo obtienes el array:
$configuracion = require __DIR__ . '/configuracion.php';Si no hay ningún return, una inclusión que termina normalmente devuelve 1, y si el archivo ya había sido procesado por una variante _once, devuelve true.
include_once y require_once
Las variantes _once evitan ejecutar de nuevo el mismo archivo. Son recomendables para definiciones de funciones, clases o archivos de configuración que pueden cargarse desde varios puntos del programa, porque así no se vuelven a declarar. Eso no significa que debas usarlas siempre: si lo que quieres es incluir el mismo fragmento varias veces, usa include o require.
Cuándo usar require
Usa require o require_once cuando el archivo sea imprescindible: si no se carga, el programa no puede seguir funcionando. Un caso típico es una configuración o un archivo con funciones necesarias para que la página funcione:
require_once __DIR__ . '/config.php';Usa include cuando el archivo no sea crítico y la página pueda seguir funcionando aunque no se cargue.
Buenas prácticas
- Usa rutas basadas en
__DIR__para evitar problemas con rutas relativas. - No incluyas archivos remotos salvo que tengas un motivo claro y controles la fuente.
- Usa
include_onceorequire_oncepara archivos con funciones, clases o configuración. - No guardes contraseñas ni claves sensibles en archivos accesibles públicamente.
Ejemplo recomendado:
require_once __DIR__ . '/includes/funciones.php';
include __DIR__ . '/partials/menu.php';Con esta estructura el código queda más ordenado y es más fácil mantener una web con varias páginas.