Frecuentemente se usan en PHP las funciones include
o require
para incluir un archivo en otro. Esto se suele usar para fragmentos de código necesarios en múltiples lugares, para evitar así la repetición; también para estructurar el código y facilitar su edición.
Ninguna de estas soluciones es válida si se quiere incluir el contenido de un archivo en una variable. Fundamentalmente porque esos archivos pueden contener código PHP que al ejecutarse produce una salida, en forma de código HTML, que es lo se quiere capturar con la variable. Es decir, en la variable no queremos el código «fuente», sino el código ya «procesado» por PHP.
Por lo tanto es necesario incluir el código PHP y ejecutarlo, pero en vez de «imprimir» la salida, capturarla en una variable. Eso es exactamente lo que hace la familia de funciones de control de salida. Son necesarias tres funciones: ob_start
, que abre un bufer para almacenar la salida; ob_end_clean
, que limpia y cierra el bufer; y ob_get_contents
, que procesa (ejecuta el PHP) el contenido almacenado en el bufer, sin borrarlo de manera que podemos ejecutarlo más de una vez.
Por ejemplo, si se quiere construir una página web a partir de los siguientes tres archivos, begin.php
, main.php
y end.php
, que juntaremos en un cuarto, index.php
.
La cabecera, en begin.php
:
<!DOCTYPE html> <html lang="<?php funcion_de_lenguaje(); ?>"> <head> <meta charset="<?php funcion_de_lenguaje(); ?>" /> <title><?php funcion_de_titulo(); ?></title> <meta content="<?php funcion_de_descripcion(); ?>" name="description" /> </head> <body>
El contenido, en main.php
:
El cierre de la página, en end.php
: