Autor
|
Tema: Inclusión de ficheros en PHP (Leído 5,038 veces)
|
madpitbull_99
|
Inclusión de ficheros en PHP
Vamos a ver las distintas formas para incluir un fichero en nuestro script PHP. Esta facilidad del lenguaje se utiliza principalmente para la definición de librerías, clases, varios script, permitiendo, de este modo, una reutilización y mantenimiento del código más óptimos. La extensión del fichero a incluir puede ser de cualquier tipo, ya sea .php, .htm, .txt, .inc, etc.
PHP dispone de una variedad de funciones que nos permiten la inclusión de ficheros en nuestros scripts. Las funciones de las que hablaremos en este articulo son las siguientes:
include() Esta función incluye y evalúa un fichero externo cada vez que es interpretada. La inclusión del fichero externo y su posterior evaluación, se realizan cada vez que el flujo del programa llega a una línea que
contenga la llamada a esta función. En caso de no encontrar el fichero especificado, se genera un warning (advertencia) y se sigue la ejecución del script.
Cuando un archivo es incluido con esta función, 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 acabar de leer dicho archivo.
Si el código contenido dentro del archivo incluido contiene instrucciones PHP, dichas instrucciones deberán estar encerradas entre las etiquetas de inicio y fin de código PHP (<?php ?>).
include_once() Funciona igual que la anterior, con la única diferencia de que esta función solo cargará y evaluará el archivo incluido solo una vez, como máximo. Con esta instrucción nos aseguramos de que un fichero sólo se ha cargado una vez a lo largo de la ejecución del script, evitando errores producidos por la redefinición de funciones o la reasignación de valores.
require() Hace lo mismo que las funciones anteriores, pero con algunas diferencias. Sólo incluye el fichero referenciado, es decir, no lo interpreta. Su comportamiento es equivalente a la directiva #include del lenguaje C/C++.
Esta función no puede ser utilizada con en estructuras condiciones o de control de bucles porque el contenido del fichero referenciado se incluye antes de que se evalúe la sentencia que lo contiene y se incluye siempre aunque la condición que lo contiene no se cumpla.
En caso de que el archivo pasado como parámetro a esta función no exista, se generará un error fatal que no permitirá con la ejecución del script. Es bastante desaconsejable pasar variables como parámetros a esta función.
require_once() Evita la carga del fichero referenciado en más de una ocasión. Hace exactamente que include_once() pero hereda el comportamiento básico de su función padre require().
La función que se va a emplear depende del tipo de aplicación que estamos desarrollando y del programador, hay que elegir la que más se ajuste, no hay ninguna favorita.
|
|
« Última modificación: 26 Abril 2011, 13:20 pm por madpitbull_99 »
|
En línea
|
|
|
|
merolhack
Desconectado
Mensajes: 278
Me encanta Joomla y lo que puedo hacer con el
|
Hola, yo cuando uso el include, primero reviso si existe o no el archivo, asi se evita el típico error mostrando la ruta del servidor, evitando mostrar información de más.... <?php $filename = 'foo.txt';
if (file_exists($filename)) { include( '/path/to/' . $filename ); } else { echo "The file $filename does not exist"; } ?> Fuente: http://php.net/manual/en/function.file-exists.php
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Buenas Mad, estas un poco equivocado. index.php <?php if(1): require('a.php'); endif; echo 'Yoya'; ?>
a.php <?php echo "Hola mundo"; ?>
Al ejecutar el source, la salida es:
Esta función no puede ser utilizada con estructuras condiciones o de control de bucles porque el contenido del fichero referenciado se incluye antes de que se evalúe la sentencia que lo contiene y se incluye siempre aunque la condición que lo contiene no se cumpla.
<?php if(1 == 2): require('a.php'); endif; echo 'Yoya'; ?>
La condicion nose cumple por lo tanto nose llega a ejecutar lo que esta dentro del if(). Salida:
|
|
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
madpitbull_99
|
@YoyaLo que dices es cierto, pero yo no me refería a esto, quise decir en estructuras de control. Por ejemplo: a.php: <?php if (require("b.php")) { echo "Ok"; } ?>
Y el fichero b.php: <?php echo "Hola desde archivo b.php\n"; ?>
Si ejecutas el archivo a.php obtendrás la siguiente salida: Hola desde archivo b.php Ok Si te das cuenta, primero evalúa el contenido del archivo b.php y después muestra Ok.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Remote file inclusion
Nivel Web
|
krispin
|
3
|
4,734
|
12 Febrero 2005, 05:23 am
por Paisterist
|
|
|
Duda File inclusion
Nivel Web
|
.:UND3R:.
|
2
|
2,824
|
20 Agosto 2008, 18:12 pm
por Azielito
|
|
|
Local File Inclusion ???
Nivel Web
|
APOKLIPTICO
|
8
|
5,271
|
23 Julio 2009, 19:08 pm
por benny_loppa
|
|
|
Inclusion de codigo php
Nivel Web
|
50l3r
|
7
|
4,404
|
6 Abril 2010, 03:54 am
por Castg!
|
|
|
Inclusión mutua de clases C++
Programación C/C++
|
darkvidhack
|
1
|
2,792
|
26 Diciembre 2011, 17:30 pm
por darkvidhack
|
|