(PHP 4, PHP 5, PHP 7, PHP 8)
La expresión de lenguaje include
incluye y ejecuta
el fichero especificado en el argumento.
Esta documentación se aplica también a la instrucción de lenguaje require.
Los ficheros son incluidos según la ruta del fichero proporcionado; si no se proporciona ninguno,
se verificará el include_path.
Si el fichero no se encuentra en el include_path,
include
verificará en el directorio del script que llama y en el directorio de trabajo actual antes de fallar.
La instrucción include
emitirá E_WARNING
si no puede encontrar el fichero;
este comportamiento es diferente de require, que emitirá E_ERROR
.
Tenga en cuenta que include
y require
lanzarán errores de tipo E_WARNING
, si el fichero no es accesible, antes de lanzar un error de tipo
E_WARNING
o E_ERROR
, respectivamente.
Si se define una ruta, absoluta (comenzando por una letra de unidad seguida de
\
para Windows, o /
para Unix/Linux)
o relativa (comenzando por . o ..), el include_path
será ignorado. Por ejemplo, si un nombre de fichero comienza por ../
,
PHP buscará en el directorio padre para encontrar el fichero especificado.
Para más información sobre cómo PHP maneja los ficheros incluidos así como la ruta de inclusión, consulte la documentación relativa al include_path.
Cuando un fichero es incluido, el código que lo compone hereda el ámbito de las variables de la línea donde aparece la inclusión. Todas las variables disponibles en esa línea en el fichero que llama estarán disponibles en el fichero llamado, a partir de ese punto. Sin embargo, todas las funciones y clases definidas en el fichero incluido tienen un ámbito global.
Ejemplo #1 Ejemplo con include
vars.php
<?php
$color = 'verde';
$fruta = 'manzana';
?>
test.php
<?php
echo "Una $fruta $color"; // Una
include 'vars.php';
echo "Una $fruta $color"; // Una manzana verde
?>
Si la inclusión ocurre dentro de una función, el código incluido será considerado como parte de la función. Esto modifica, por lo tanto, el contexto de las variables accesibles. Una excepción a esta regla: las constantes mágicas son analizadas por el analizador antes de que la inclusión ocurra.
Ejemplo #2 Inclusión de ficheros en una función
<?php
function foo()
{
global $color;
include 'vars.php';
echo "Una $fruta $color";
}
/* vars.php está en el contexto de foo() *
* por lo tanto $fruta no está disponible fuera de *
* esta función. $color lo está, ya que es *
* una variable global */
foo(); // Una manzana verde
echo "Una $fruta $color"; // Una verde
?>
Es importante señalar que cuando un fichero es include o require, los errores de análisis aparecerán en HTML al principio del fichero, y el análisis del fichero padre no será interrumpido. Por esta razón, el código que está en el fichero debe ser colocado entre las etiquetas habituales de PHP.
Si los gestores de inclusión de URL están activados en PHP, se puede localizar el fichero con una URL (a través de HTTP o bien con un gestor adaptado: ver Protocolos y Envolturas soportados para una lista de los protocolos), en lugar de una simple ruta local. Si el servidor remoto interpreta el fichero como código PHP, las variables pueden ser transmitidas al servidor remoto a través de la URL y el método GET. Esto no es, estrictamente hablando, lo mismo que heredar el contexto de la variable. El fichero incluido es en realidad un script ejecutado de forma remota, y su resultado es incluido en el código actual.
Ejemplo #3 Uso de la instrucción include
a través de HTTP
<?php
/* Este ejemplo asume que www.example.com está configurado para tratar
* los ficheros .php y no los ficheros .txt. Además,
* 'Work' significa aquí que las variables
* $foo y $bar están disponibles en el fichero incluido
*/
// No funciona: file.txt no ha sido tratado por www.example.com como PHP
include 'http://www.example.com/file.txt?foo=1&bar=2';
// No funciona: el script busca un fichero llamado
// 'file.php?foo=1&bar=2' en el sistema local
include 'file.php?foo=1&bar=2';
// Éxito
include 'http://www.example.com/file.php?foo=1&bar=2';
?>
Un fichero remoto puede ser tratado en el servidor remoto (dependiendo de la extensión del fichero y si el servidor remoto ejecuta PHP o no) pero siempre debe producir un script PHP válido porque será tratado en el servidor local. Si el fichero del servidor remoto debe ser tratado en el lugar y mostrado únicamente, readfile() es una función mucho más adecuada. De lo contrario, se debe tener cuidado de asegurar el script remoto para que produzca un código válido y deseado.
Véase también trabajar con ficheros remotos, fopen() y file() para información relacionada.
Gestión del retorno: include
devuelve false
en caso
de error y emite una advertencia. Las inclusiones con éxito, incluyendo si
son sobrescritas por el fichero incluido, devuelven
1
. Es posible ejecutar la estructura de lenguaje
return dentro de un fichero
incluido para determinar el proceso en ese fichero, y devolver
al script que lo llamó. Además, es posible devolver valores desde ficheros incluidos.
Se puede tomar el valor
desde la llamada al fichero incluido como se desee desde una
función normal. Esto no es posible, sin embargo, cuando se incluyen ficheros remotos,
y esto, mientras la salida del fichero remoto no tenga
etiquetas PHP de inicio
y fin válidas (al igual que para los ficheros locales).
Se pueden declarar las variables necesarias dentro de estas etiquetas
y serán introducidas en el lugar donde el fichero fue incluido.
Como include
es una estructura de lenguaje particular,
los paréntesis no son necesarios alrededor del argumento. Tenga cuidado
cuando compare el valor devuelto.
Ejemplo #4 Comparación del valor de retorno de una inclusión
<?php
// No funciona, evaluado como include(('vars.php') == TRUE), es decir, include('1')
if (include('vars.php') == TRUE) {
echo 'OK';
}
// Funciona
if ((include 'vars.php') == TRUE) {
echo 'OK';
}
?>
Ejemplo #5 include
y return
return.php
<?php
$var = 'PHP';
return $var;
?>
noreturn.php
<?php
$var = 'PHP';
?>
testreturns.php
<?php
$foo = include 'return.php';
echo $foo; // muestra 'PHP'
$bar = include 'noreturn.php';
echo $bar; // muestra 1
?>
$bar
tiene el valor de 1
porque
la inclusión fue exitosa. Note la diferencia entre los dos
ejemplos anteriores. El primero usa el comando
return
en el fichero incluido, mientras que el segundo no lo hace.
Si el fichero no puede ser incluido, false
es devuelto y un error
de nivel E_WARNING
es enviado.
Si hay funciones definidas en el fichero incluido, pueden ser utilizadas en el fichero principal si están antes del return o después. Si el fichero es incluido dos veces, PHP emitirá un error fatal porque las funciones ya han sido declaradas. Se recomienda usar include_once en lugar de verificar si el fichero ya ha sido incluido y por lo tanto devolver condicionalmente la inclusión del fichero.
Otra forma de incluir un fichero PHP en una variable es capturar
la salida usando las funciones de
control de salida con
include
. Por ejemplo:
Ejemplo #6 Uso de la salida del buffer para incluir un fichero PHP en una cadena
<?php
$string = get_include_contents('somefile.php');
function get_include_contents($filename) {
if (is_file($filename)) {
ob_start();
include $filename;
return ob_get_clean();
}
return false;
}
?>
Para incluir automáticamente ficheros en sus scripts, vea también las opciones de configuración auto_prepend_file y auto_append_file del php.ini.
Nota: Puesto que esto es una construcción del lenguaje y no una función, no puede ser llamada usando funciones variables.
Véase también require, require_once, include_once, get_included_files(), readfile(), virtual(), y include_path.