Otro miércoles más, volvemos con nuestro curso básico de PHP en RedesZone.
Hoy veremos la funciones include(),require(),include_once() y Require_once().
Las funciones include() y require() , son practicamente iguales, sólo se diferencian en un pequeño detalle, así como las funciones include_once() y require_once() que también son casi iguales entre sí.
A continuación podréis ver las mínimas diferencias entre ellas y para qué sirven.
Por esto, vamos a explicar con ejemplos include() e include_once().
La función include() sirve para incluir un archivo externo en el actual (con el que estamos trabajando).
Pensemos por un momento que tenemos un archivo llamado suma.php, y en él tenemos una función que suma los dos números (solo esa función) que se le den como argumentos. Nosotros estamos realizando un proyecto en php que consta de diferentes archivos .php y en muchos de ellos deberemos sumar dos números con una función, pues bien, ¿no sería molesto tener que estar creando la función en cada uno de ellos si ya la tenemos creada en suma.php?. Para evitar esto, existe include, cada vez que necesitemos sumar, podríamos hacer un include(suma.php); y usar la función suma en nuestro archivo como si estuviese declarada allí.
Éste sería uno de los usos de include(); , pero vamos a explicar cómo funciona. La función include(); incluye todo un documento en texto plano, es decir, si contiene texto plasmará texto, si contiene html plasmará html, si tiene html + php pues lo plasmará igual en el documento donde esté el include();.
¿Que quiere decir esto?, pues básicamente que no sólo podemos incluir funciones, sino también simple texto, un archivo php completo (variables,funciones…Todo).
Un punto a tener en cuenta es que si hacemos un include(); dentro de una función, la inclusión estaría dentro del ámbito de esa función, es decir, no sería global, así que por ejemplo no podréis usar variables del include(); que se ha hecho dentro de una función fuera de la misma.
Ahora vemos como se utiliza include(); :
El uso de include(); es sencillo y se limita a include (la ruta del archivo que quieres incluir); la ruta puede ser escrita directamente o estar contenida en una variable. La ruta también puede ser remota, por ejemplo una web, include(http://www.google.es);.
Antes de ponernos con los códigos de ejemplo, vamos a ver la dichosa diferencia entre require(); e include();. Básicamente la diferencia es que con require(); si el archivo no existe, se genera un error y se interrumpe el script, mientras que con include(); solo se generará una advertencia (warning).
Nota: si usáis versiones antiguas de PHP, es mejor que reviséis la documentación de vuestra versión ya que hace relativamente poco, include() y require(), tenían más diferencias.
Vamos a ver unos ejemplos antes de ver para que sirve require _once() e include_once().
Otro ejemplo incluyendo variables:
Nota: Como ya vamos trabajando simultáneamente con varios archivos , podré un comentario en el código cuál es cada archivo (en la parte superior).
Nos metemos ahora con require_once() e include_once(). Como he explicado antes, entre ellas existe la misma diferencia que entre include() y require().
Tanto require_once() e include_once() simplemente lo que hacen es incluir sílo si éste no ha sido incluido ya, si ha sido incluido, la función no hará nada.
Ahora, os vamos a dar un consejo haciendo algo que no nos gusta hacer (adelantarnos comentando algo que no hemos visto) en este manual pero que vemos necesario.
Dentro de poco veremos la interacción de scripts PHP (tanto orientado a la creación de web, como a scripts para ser ejecutados en consola) con el usuario, es decir , pedir información al usuario y procesar esa información. ¿A qué viene esto aquí?, pues viene básicamente a que cuando eso sea explicado tenéis que tener cuidado con el include/require y pedir información.
No nos vamos a extender pero si estáis desarrollando un sitio web en PHP, ¡¡¡¡JAMÁS, JAMÁS!!! podéis dar al usuario la opción de elegir que se incluye (ni local, ni remoto) sin acotar el dominio de la inclusión (sin decir: sólo puedes incluir estas X rutas). Si dejáis que el usuario sea quien elija qué se incluye en la web mediante un include/require algún día os encontraréis posiblemente en el mejor de los casos un reporte de seguridad y en el peor un deface/robo de bases de datos/borrado completo del site, backdors en fin…, hemos visto muchas cosas ya ¿no?, para qué explicar que más puede pasar.
Nos vemos en el siguiente volumen!!