Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: madpitbull_99 en 25 Abril 2011, 19:58 pm



Título: Inclusión de ficheros en PHP
Publicado por: madpitbull_99 en 25 Abril 2011, 19:58 pm
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.


Título: Función File Exist
Publicado por: merolhack en 25 Abril 2011, 23:54 pm
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....

Código:
<?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


Título: Re: Inclusión de ficheros en PHP
Publicado por: ~ Yoya ~ en 26 Abril 2011, 00:00 am
Buenas Mad, estas un poco equivocado.

index.php
Código
  1. <?php
  2.  
  3. if(1):
  4. require('a.php');
  5. endif;
  6.  
  7. echo 'Yoya';
  8. ?>
  9.  

a.php
Código
  1. <?php
  2.  
  3. echo "Hola mundo";
  4.  
  5. ?>

Al ejecutar el source, la salida es:
Código:
Hola mundoYoya





Citar
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.

Código
  1. <?php
  2.  
  3. if(1 == 2):
  4. require('a.php');
  5. endif;
  6.  
  7. echo 'Yoya';
  8. ?>
  9.  

La condicion nose cumple por lo tanto nose llega a ejecutar lo que esta dentro del if().
Salida:
Código:
Yoya





Título: Re: Inclusión de ficheros en PHP
Publicado por: madpitbull_99 en 26 Abril 2011, 13:26 pm
@Yoya

Lo que dices es cierto, pero yo no me refería a esto, quise decir en estructuras de control.

Por ejemplo:

a.php:
Código
  1. <?php
  2. if (require("b.php")) {
  3. echo "Ok";
  4. }
  5. ?>

Y el fichero b.php:
Código
  1. <?php
  2. echo "Hola desde archivo b.php\n";
  3. ?>

Si ejecutas el archivo a.php obtendrás la siguiente salida:
Código:
Hola desde archivo b.php
Ok

Si te das cuenta, primero evalúa el contenido del archivo b.php y después muestra Ok.