Jul 02 2008
include y require
Las instrucciones include y require son de las mas conocidas en php. Con ellas puedes ahorrarte trabajo al reutilizar código (script, o simple html) cuantas veces quieras, siendo uno de sus usos mas sencillos y típicos el de incluir cabeceras, menú generico y pies de páginas en un sistema de plantillas.
La utilización del include es muy simple:
-
<?php include(“tuarchivo.htm”); ?>
-
<?php require(“tuarchivo.htm”); ?>
include
La sentencia include() inserta y evalúa el archivo especificado. Puedes incluir aquí no solamente un fichero en tu servidor, sino una página web remota (indicando la url). Su uso típico sería , que llama al archivo header.php y lo inserta en el propio punto del script donde hacemos la llamada.
Tanto si insertamos un archivo con include(); o require();, debes tener en cuenta que PHP pasa a modo html hasta el final del mismo, por lo que si el archivo a insertar contiene código php que deba ser evaluado (ejecutado), debe ser encerrado dentro de etiquetas de comienzo y fin de PHP.
Ejemplo:
Archivo 1 : header.htm:
-
<html>
-
<head>
-
<title> Muestra de includes </title>
-
</head>
-
<body>
Archivo 2: footer.htm:
-
</body>
-
</html>
Archivo 3: index.php :
-
<?php include(“header.htm”); ?>
-
<p>
-
Hola, Mundo !
-
</p>
-
<?php include(“footer.htm”); ?>
Y el resultado es:
Debes tener en cuenta que los archivos que se van insertando se ejecutan en el entorno del archivo primero que contiene la llamada, lo que es importante al establecer los paths. Por ejemplo, si tienes dos archivos, footer.php y notes.php en un directorio llamado anexos y llamas al primero desde fuera de ese directorio, lo harias así: include (”anexos/footer.php”); y si footer.php contiene una llamada a otro archivo notes.php, debes escribir hacer la llamada también como include (”anexos/notes.php”); puesto que aunque footer y notes están en el mismo directorio, la llamada a ambos es desde fuera, desde la misma posición que el script que hace la llamada.
Y lo mismo ocurre con las variables. El codigo insertado hereda el mismo alcance de variables que el código donde sea insertado.
require
La diferencia documentada entre include y require consistiría en que la llamada con include podría hacerse condicionalmente. A diferencia de include(), require() siempre leerá el archivo referenciado, incluso si la línea en que está no se ejecuta nunca. Si se quiere incluir condicionalmente un archivo, se usa include(). La sentencia condicional no afecta a require(), aunque si la línea en la cual aparece el require() no se ejecuta, tampoco se ejecutará el código del archivo referido.
Sin embargo, a partir de la version PHP 4.0.2 y posteriores esto ya no es así y ambas construcciones se comportan exactamente de la misma manera, con la única diferencia de que si el archivo llamado no existe, include solo da una advertencia, y sigue ejecutando el código, mientras que require produce un error e interrumpe la ejecución.
include_once y require_once
Estas construcciones presentan como única diferencia que la inclusión del archivo se ejecuta una sola vez (aunque a lo largo de la ejecución del script existan otras llamadas al mismo), lo que es útil para evitar conflictos con redeficiones de funciones o nombres de variables.

