Continuando con nuestros tutoriales de PHP, hoy veremos una funcionalidad bastante sencilla que nos presenta este lenguaje, pero que no por eso deja de ser útil. Nos referimos al uso de dos funciones esenciales como son include y require.
Para ver una explicación completa, así como su funcionamiento, los invitamos a seguirnos después del salto.
A pesar de que no es tan necesario para este tutorial, veamos lo que necesitamos:
Con eso claro, vamos de lleno al tutorial.
En este tutorial, lo que cubriremos básicamente es el uso y funcionamiento de dos funciones de PHP llamadas include y require, las cuales son tremendamente sencillas de usar, pero sumamente útiles a la hora de ahorrarnos codificación y también para plantear algunos temas de seguridad, los cuales nunca están demás.
Para comenzar, veremos la función include. Para partir:
¿Qué es Include?
include( ) es una sentencia de PHP, la cual nos permite hacer una llamada a otro elemento (página o archivo, puede ser dinámico o estático) desde una página en particular. Al hacer la llamada mediante la función, se incluirá el contenido del archivo llamado en el que se está utilizando y se procederá a evaluar y ejecutar sus líneas, ya sean codificadas en HTML o bien en lenguaje PHP.
Las páginas que llamamos con include pueden encontrarse en la misma ruta que el archivo desde donde llamamos, en uno distinto o bien en una URL completamente diferente.
Un hecho a tener en cuenta es que cuando llamamos a la función include, la ejecución pasa a modo HTML, por lo que si el archivo que llamamos contiene código PHP adicional, este debe estar encerrado entre <? y ?>, tal como si fuera un código normal.
¿Cual es la verdadera utilidad de un include?
Bastante, por decirlo de alguna forma. Analicemos por ejemplo el caso de que estamos levantando un sitio con páginas codificadas con PHP, en el cual hacemos constantes llamadas a una base de datos, ya sea para leer, insertar, actualizar o eliminar datos. Normalmente en cada una de estas páginas cuando queramos acceder a la BD, utilizaríamos el siguiente código para establecer el enlace:
<HTML>
<HEAD>
<TITLE> Página de prueba </TITLE>
<BODY>
<?
$conexion=mysql_connect(“url”,”username”,”password”)
or die(“No se puede conectar a la base de datos”);
mysql_select_db(“nombrebd”)
or die(“No se puede seleccionar la base de datos”);
?>
</BODY>
</HTML>
Si bien para este caso estamos hablando de 4 líneas de código, en muchas situaciones, o en distintas codificaciones nos referiremos a muchas mas líneas. El agregar estas líneas individualmente a cada página en las que las necesitemos utilizar sería bastante engorroso y por lo demas recargaríamos innecesariamente a nuestro servidor al procesar más líneas de código de las necesarias.
Veamos el mismo ejemplo, pero utilizando include. Lo primero que hacemos es crear un nuevo archivo llamado “conexion.php” (sin las comillas), y añadimos el siguiente código:
<?
$conexion=mysql_connect(“url”,”username”,”password”)
or die(“No se pudo conectar a la base de datos”);
mysql_select_db(“nombrebd”)
or die(“No se pudo seleccionar la base de datos”);
?>
Luego, desde alguna de nuestras páginas hacemos la llamada con include, y nos quedaría algo como esto:
<HTML>
<HEAD>
<TITLE> Página de prueba </TITLE>
</HEAD>
<BODY>
<?
include(“conexion.php”);
?>
</BODY>
</HTML>
Mucho más sencillo, ¿No?. Además, evitamos estar recordando constantemente los datos de conexión a nuestra BD, y si necesitáramos realizar cambios en aquellos datos, solo modificamos conexion.php y no cada una de las páginas donde originalmente aparecía el código.
Lo principal que debemos recordar es que la función de include en PHP, dentro del paréntesis, nos solicita un parámetro, el cual es una cadena equivalente a la ruta del archivo que deseamos llamar. En el ejemplo pasado, asumimos que conexión estaría guardado en la misma ruta que el archivo desde donde la llamamos, por eso incluimos solo el nombre y su extensión.
¿Cuántos includes podemos hacer y dónde?
La respuesta es simple: Todos los que queramos y donde queramos. Dentro de una página PHP podemos hacer múltiples llamadas a distintos archivos a través de include, incluso (valga la redundancia), podemos llamar a un mismo archivo varias veces en distintos momentos de la ejecución.
El lugar de la ejecución es simplemente donde necesitemos hacer la inclusión. Si necesitamos incluir al principio, lo hacemos al principio, si es al medio o dentro de un ciclo o dentro de una iteración condicional, lo hacemos ahí. No hay límites con respecto a eso.
Además, los includes pueden ser anidados, es decir, podemos hacer una llamada a una página que a su vez realice una llamada a otra página. Eso sí, debemos tener en cuenta, a pesar de que la “segunda llamada”, o sea, la que se hace dentro de la página que estamos llamando en primer lugar, sea a una página en la misma ruta, si estas dos últimas se encuentran en una ruta distinta de la primera página que llama, es la primera ruta la que se considera. Veamos un ejemplo:
Estamos trabajando en una página llamada index.php, en la cual al empezar queremos hacer una llamada a una página header.php que se encuentra en la ruta “/includes/header.php” y esta hace una llamada a body.php que se encuentra en la misma “/includes/”, el código de header.php debería incluir la siguiente llamada:
<?
include(“/includes/body.php”);
?>
Ya que este código se ejecutará desde index.php y por lo tanto se debe considerar la ruta completa para que la llamada sea correcta.
Múltiples usos
Los includes tienen múltiples usos. Además de los que hemos visto para hacer conexiones con las bases de datos (o cerrarlas), podemos utilizarlas para insertar secciones de una página. Por ejemplo, podemos tener una página llamada index.php que se componga de solo includes, algo así:
<? include(“header.php”); ?>
<? include(“body.php”); ?>
<? include(“footer.php”); ?>
Ahora, en los archivos que estamos llamando, deberíamos incluir las etiquetas HTML, el código PHP y otras cosas que compongan el contenido.
A continuación, veremos la función require.
¿Qué es un require?
Al igual que include, require es una función de PHP la cual nos permite realizar llamadas a otras páginas o archivos. Su uso y funcionalidad es igual a la de la función include, radicando su mayor diferencia en que require es de carácter obligatorio, mientras que include es condicional. Esto significa, que si hacemos un llamado mediante include a una página que no existe, la ejecución solo lanzará una advertencia y se continuará ejecutando el resto del código, mientras que require lanzará un error y la ejecución se detendrá por completo.
Adicionalmente es bueno añadir, que una llamada mediante require siempre se ejecutará, aún cuando ese trozo de código no sea utilizado.
Los usos, parámetros y características de require son exactamente los mismos que de include desde la versión 4.0.2 de PHP, por lo que no especificaremos ejemplos, ya que sería redundar en lo anterior.
Además, tanto para el uso de include como de require, en los archivos que llamamos, podemos plantear lo como un archivo de solo funciones para utilizarlas como estimemos conveniente. Si este es el caso, solo podemos hacer un include en la página donde utilizaremos las funciones y luego hacemos llamadas a las funciones. Por ejemplo, si tenemos un archivo llamado funciones.php que contiene lo siguiente:
<?
function Calculo( )
{
$suma=$valor1+valor2;
return $suma;
}
?>
Y luego tenemos un archivo index.php en el que queremos llamar esa función, haremos:
<? include(“funciones.php”); ?>
Posteriomente, cada vez que queramos llamar a la función calculo, solo escribimos: calculo(); y obtendremos ese resultado.
Como podemos apreciar, el uso de archivos externos en PHP es bastante sencillo. Mediante include y require podemos hacer llamadas a múltiples archivos de distinto tipo (HTML, PHP, etc) e incluirlos cada vez que los necesitemos.
Como siempre, este tutorial ha sido desarrollado, probado y documentado por el equipo de Como Lo Hago, por lo que cuenta con nuestro Sello de Garantía.
Cualquier duda o comentario que puedan tener, los invitamos a dejarnos unas líneas en el área habilitada a continuación.
Esperamos que este tutorial haya sido de utilidad para Uds.
Muchas gracias por leer y será hasta una próxima oportunidad.
2:29:09 am
Tengo el siguiente error, que he revisado todas las direcciones y no veo ninguna deformidad
Failed opening ‘../acceso/conexion.php’ for inclusion (include_path=’.:/usr/share/php:/usr/share/pear’) in /var/www/marti/negocio/negocio.php on line 2
2:30:33 pm
Buen tuto.
Te has olvidado de darle argumentos formales a la función
calculo 😉
7:28:37 pm
ummm gracias.. no sabia las diferencias entre ambas funciones
10:24:25 am
super bueno el tutoria.
pero necesito averigur si se puede usar includes en un boton.
es decir, lo que necesito es que al precionar 3 botones diferentes, se carguen 3 sitios distintos mediente include.
asociando a cada boton un sitio diferente.
gracias.
9:10:44 pm
seria bueno colocar una imagen de como queda dividida la pagina
4:00:27 pm
yo he tratado de utilizar justamente para las conexiones de BD´s
el archivo”conexion.php”
contiene:
mi archivo “archivo.php”
hace un include a conexion.php
y cuando ejecuto una query y quiero tomar el valor me dice que no hay conexion a la base de datos y me da un error del tipo cuando no poner la conexión ni seleccionas una BD……que puede ser???
9:07:02 am
Una pregunta por favor, tengo un codigo php en el cual en cierto sito he puesto 11 includes distintos que me dan un numero, una cantidad, cada uno de los archivos includes trabajan con if, elseif y else, por lo tanto la respuesta varia entre 0, 1 ó 2, dependiendo de la veracidad del if, en otro sitio del codigo necesito sumar estos 11 resultados, osea haber si me he explicado, lo que necesito es una suma de todos los resultados de mis includes, ¿puedo de algun modo poner un include que llame a los 11 archivos y los sume? por poner un ejemplo:
Gracias
2:26:41 pm
fino, las descripciones del uso de include y require, estan muy bien explicadas
2:30:43 pm
amigo Gush, debes llamar la funcion sumar desde tu index.php (pagina principal)
12:58:55 pm
Muy buena aportacion y explicacion, muchas gracias.