La sentencia include() incluye y evalúa
el archivo especificado.
Si "URL fopen wrappers" esta activada en PHP (como está en la
configuración inicial), se puede especificar el fichero que se
va a incluir usando una URL en vez de un fichero local (con su Path)
Ver Ficheros remotos
y fopen() para más información.
Un punto importante sobre su funcionamiento es que cuando un archivo
se incluye con include() o se requiere con
require(), el intérprete sale del modo PHP
y entra en modo HTML al principio del archivo referenciado,
y vuelve de nuevo al modo PHP al final. Por esta razón, cualquier
código dentro del archivo referenciado que debiera ser ejecutado
como código PHP debe ser encerrado dentro de etiquetas válidas de
comienzo y fin de PHP.
Esto sucede cada vez que se encuentra la sentencia
include(), así que se puede usar una sentencia
include() dentro de una estructura de bucle para
incluir un número de archivos diferentes.
include() difiere de
require() en que la sentencia include se
re-evalúa cada vez que se encuentra (y sólo cuando está siendo
ejecutada), mientras que la sentencia require()
se reemplaza por el archivo referenciado cuando se encuentra por
primera vez, se vaya a evaluar el contenido del archivo o no
(por ejemplo, si está dentro de una sentencia if cuya condición evaluada
es falsa).
Debido a que include() es una construcción especial
del lenguaje, se debe encerrar dentro de un bloque de sentencias si
está dentro de un bloque condicional.
En ambos, PHP3 y PHP4, es posible ejecutar una sentencia
return dentro de un archivo incluido con
include(), para terminar el procesado de ese
archivo y volver al archivo de comandos que lo llamó.
Existen algunas diferencias en el modo en que esto funciona,
no obstante. La primera es que en PHP3, return
no puede aparecer dentro de un bloque a menos que sea un bloque de
función, en el cual return se aplica a esa función
y no al archivo completo. En PHP4, no obstante, esta restricción no
existe. También, PHP4 permite devolver valores desde archivos
incluidos con include(). Se puede capturar el valor de la
llamada a include() como se haría con una
función normal. Esto genera un error de intérprete en PHP3.
Ejemplo 11-1. include() en PHP3 y PHP4
Asumamos la existencia del siguiente archivo (llamado
test.inc) en el mismo directorio que el
archivo principal:
<?php
echo "Antes del return <br>\n";
if ( 1 ) {
return 27;
}
echo "Después del return <br>\n";
?> |
Asumamos que el archivo principal (main.html)
contiene lo siguiente:
<?php
$retval = include( 'test.inc' );
echo "El archivo devolvió: '$retval'<br>\n";
?> |
Cuando se llama a main.html en PHP3,
generará un error del intérprete en la linea 2; no se puede
capturar el valor de un include() en PHP3.
En PHP4, no obstante, el resultado será:
Antes del return
El archivo devolvió: '27' |
Ahora, asumamos que se ha modificado main.html
para que contenga lo siguiente:
<?php
include( 'test.inc' );
echo "De vuelta en main.html<br>\n";
?> |
En PHP4, la salida será:
Antes del return
De vuelta en main.html |
No obstante, PHP3 dará la siguiente salida:
Antes del return
27De vuelta en main.html
Parse error: parse error in /home/torben/public_html/phptest/main.html on line 5 |
El error del intérprete es resultado del hecho de que la sentencia
return está encerrada en un bloque de no-función
dentro de test.inc. Cuando el return se mueve
fuera del bloque, la salida es:
Antes del return
27De vuelta en main.html |
El '27' espúreo se debe al hecho de que PHP3 no soporta devolver
valores con return desde archivos como ese.
|
When a file is include()ed, the code it
contains inherits the variable scope of the line on which the
include() occurs. Any variables available at
that line in the calling file will be available within the called
file. If the include() occurs inside a
function within the calling file, then all of the code contained
in the called file will behave as though it had been defined
inside that function.
If the include()ed file is called via HTTP
using the fopen wrappers, and if the target server interprets the
target file as PHP code, variables may be passed to the
include()ed file using an URL request string as
used with HTTP GET. This is not strictly speaking the same thing
as include()ing the file and having it inherit
the parent file's variable scope; the script is actually being run
on the remote server and the result is then being included into
the local script.
See also require(), require_once(),
include_once(), readfile(),
and virtual().