- Complica el mantenimiento o modificación.
- Dificultades para poder reutilizar el código.
- Dificultades para utilizar códigos de terceros.
Para evitar todos estos problemas, debemos separar el código de una página en varios archivos PHP y utilizar las funciones que PHP nos brinda para incluir los códigos que sean necesarios.
Include y Require en PHP como Solución
Los lenguajes de programación permiten escribir códigos en diferentes archivos y luego importarlos o llamarlos en el archivo que sea necesario. Para esto PHP tiene las dos funciones que ya mencionamos, include y require. Veamos un ejemplo general de como funciona esto:
$db = new mysqli('localhost', 'usuario', 'clave', 'nombre_base_datos'); if($db->connect_errno > 0){ die('Imposible conectar [' . $db->connect_error . ']'); } $sql = "SELECT lenguaje FROM lenguajes"; if(!$resultado = $db->query($sql)){ die('Ocurrio un error ejecutando el query [' . $db->error . ']'); } while($fila = $resultado->fetch_assoc()){ echo $fila['lenguaje'] . '<br />'; }1234567891011121314 $db=newmysqli('localhost','usuario','clave','nombre_base_datos');if($db->connect_errno>0){ die('Imposible conectar ['$db->connect_error']');} $sql="SELECT lenguaje FROM lenguajes"; if(!$resultado=$db->query($sql)){ die('Ocurrio un error ejecutando el query ['$db->error']');} while($fila=$resultado->fetch_assoc()){ echo$fila['lenguaje']'<br />';}
Este código no tiene ningún problema. Pero si tenemos muchas páginas con consultas de base de datos, entonces vamos a repetir la parte de la conexión muchas veces y eso es poco eficiente. también un caso muy malo seria que cambiara la clave o el usuario de la base de datos, lo cual nos obligaría a cambiar ese texto en todos los archivos. Veamos como seria una manera mas eficiente de lograr lo anterior.
// archivo conexión.php $db = new mysqli('localhost', 'usuario', 'clave', 'nombre_base_datos'); if($db->connect_errno > 0){ die('Imposible conectar [' . $db->connect_error . ']'); }123456 // archivo conexión.php $db=newmysqli('localhost','usuario','clave','nombre_base_datos');if($db->connect_errno>0){ die('Imposible conectar ['$db->connect_error']');}
// archivo index.php require 'conexión.php'; // esta función simplemente toma el contenido de conexion.php y lo coloca en esta posición // al final el interprete de php usara el código completo // pero para nosotros esta separado y organizado $sql = "SELECT lenguaje FROM lenguajes"; if(!$resultado = $db->query($sql)){ die('Ocurrio un error ejecutando el query [' . $db->error . ']'); } while($fila = $resultado->fetch_assoc()){ echo $fila['lenguaje'] . '<br />'; }12345678910111213141516 // archivo index.php require'conexión.php';// esta función simplemente toma el contenido de conexion.php y lo coloca en esta posición// al final el interprete de php usara el código completo // pero para nosotros esta separado y organizado $sql="SELECT lenguaje FROM lenguajes"; if(!$resultado=$db->query($sql)){ die('Ocurrio un error ejecutando el query ['$db->error']');} while($fila=$resultado->fetch_assoc()){ echo$fila['lenguaje']'<br />';}
Podemos observar como tenemos un archivo que solo contiene las líneas de código necesarias para establecer la conexión a la base de datos y luego ese archivo es invocado o incluido en el código que necesitamos utilizar la base de datos. Ahora solo tenemos repetir la línea que incluye la conexión en donde sea necesario y cualquier cambio que se deba hacer al código de la conexión se hace en un solo archivo.
Include o Require
Anteriormente dijimos que hay dos funciones include y requiere, las cuales tienen propósitos diferentes.
Include
Cuando utilizamos include, PHP intenta cargar el archivo solicitado, pero si no lo logra encontrar entonces muestra un error de tipo warning. Esto significa que algo salió mal durante el código pero la ejecución del mismo continua.
Esta función se puede utilizar cuando se necesita cargar un archivo que no sea del todo necesario durante la ejecución de un script, como por ejemplo un HTML(quizás la cabecera, pie de página o menú lateral). Si el archivo no se logra cargar entonces la página no tiene porque dejar de mostrarse.
Require
Cuando utilizamos require, PHP intenta cargar el archivo solicitado, pero si no lo logra cargar entonces muestra un error de tipo fatal error. Esto significa que el script no puede continuar y se detiene su ejecución.
Esta función de debe utilizar cuando el archivo que se solicita es necesario para la ejecución del script, en este caso podríamos hablar de la conexión a la base de datos. Si el archivo de conexión no es cargado entonces el programa se debe detener.
Include_once y Require_once
Las funciones include y require van a agregar el código que tenga el archivo siempre que sea llamado. Es decir, si colocamos cuatro veces en el script include 'pie_de_página.php';
entonces la página tendrá cuatro pies de página, algo que tiene poca lógica.
Para que esto no ocurra tenemos las funciones require_once e include_once, las cuales funcionan igual a las anteriores pero si se vuelve a llamar al mismo archivo dentro de un mismo script esta llamada es ignorada. Esto quiere decir que solo se hace efectiva la carga del archivo solicitado la primera vez que se ejecute la función en el script.
Es muy útil para cuando tengamos la necesidad de cargar un archivo con funciones o algún código que solo debamos cargar una sola vez y no quisiéramos que por error se vuelva a cargar.
Conclusión
En este capítulo hemos aprendido 4 funciones que nos ayudar a mantener nuestro código ordenado y separado para que sea mas fácil hacer cambios y reutilizar pedazos del mismo. La utilización de cualquiera de las 4 funciones viene dada por la necesidad que tenga el script, ya que cada una tiene un propósito especifico. Cualquier duda o comentario estaré atento a la sección de comentarios.