Si has seguido la serie de PHP desde cero, entonces ya tienes los conocimientos para crear un sitio con PHP. Pero todavía no hemos visto algo muy importante a la hora de crear grandes códigos y tiene que ver con la siguiente pregunta. ¿Como haríamos para crear un sitio web que contenga 100 páginas con conexión a una base de datos? Sería algo tedioso tener que repetir un código como la conexión a la base de datos o la cabecera del sitio web 100 veces. Para esto tenemos las funciones require y include de PHP.

Hasta ahora los scripts que hemos escrito son de pocas líneas de código, pero a medida que un proyecto va creciendo y tenga mas funciones, también será mucho mayor la cantidad de líneas por cada archivo. Por lo tanto, tener todo el código para una página en un solo archivo crea varios problemas que nombramos a continuación:

  • 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:

 <?php

$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 />';
}

?>  

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.

 <?php

// archivo conexión.php

$db = new mysqli('localhost', 'usuario', 'clave', 'nombre_base_datos');
if($db->connect_errno > 0){
    die('Imposible conectar [' . $db->connect_error . ']');
}

?>  
 <?php

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