Cuando estudiamos programación, aprendemos con el tiempo que una de las cosas más importantes en nuestro código no es que simplemente funcione, sino que esté bien organizado. Una forma de realizar esta organización es dividiendo un archivo principal en archivos más pequeños, realizando así una fragmentación de nuestro código. Y después de realizar esta división, necesitamos introducir en nuestra página el contenido de esos otros archivos si deseamos acceder a sus recursos. Para eso usamos el concepto de importación de archivos. En PHP, podemos realizar esta importación a través del include y del require. Vamos a hablar sobre cada uno de ellos en este artículo.
include
El include realiza la importación de un archivo para nuestra página y verifica si ese archivo está funcionando y si realmente existe. Si esta verificación constata que hay algún problema en el archivo, se devolverá un aviso (warning) en la pantalla, pero el código que esté debajo del include seguirá ejecutándose.
Además, el include tiene algunos recursos propios. Tiene acceso al include_path, que es un directorio en nuestro servidor, configurado en el archivo php.ini, que contiene algunos archivos de inclusión. Así, al realizar el include, si el archivo deseado no existe en la ruta especificada, PHP verifica también si existe en el include_path. Si no existe en ninguno de los dos, se devuelve el warning.
Además, con el include tenemos acceso a otro recurso: podemos realizar la importación de archivos que estén en otros servidores, en otros dominios. Si deseamos usar este recurso, debemos tener cuidado, ya que traer el contenido de archivos de otros dominios a nuestra página puede ser peligroso. Después de todo, esos archivos pueden contener códigos maliciosos. Por lo tanto, tenga mucho cuidado con este tipo de importación.
A continuación, vemos un ejemplo del uso de un include:
<?php
include "user.php";
Un detalle interesante es que podemos usar el include y el require con paréntesis si lo deseamos. Sin embargo, no son funciones. La documentación de PHP los define como declaraciones. Aún así, podemos usar paréntesis si lo deseamos, como vemos a continuación:
<?php
include("user.php");
require
El require realiza la importación de un archivo para nuestra página y verifica si ese archivo está funcionando y si realmente existe. Sin embargo, lo hace con una pequeña diferencia. Si se constata algún problema en el archivo que estamos importando, el require devuelve un error fatal, lo que detendrá la ejecución de nuestro código, a diferencia del include. Así, podemos decir que el require obliga a que el archivo importado esté funcionando para que nuestra aplicación no “quiebre”.
A continuación, vemos un ejemplo del uso del require:
<?php
require "hcode.php";
Y, al igual que el include, podemos usar el require con paréntesis también, si lo deseamos:
<?php
require("hcode.php");
Para entender mejor la diferencia entre el include y el require, vamos a crear un ejemplo práctico.
Ejemplo Práctico
Vamos a crear un archivo llamado file.php, que será importado posteriormente. Este mostrará un mensaje de importación exitosa, mediante un echo. Su script será el siguiente:
<?php
echo "Importación ok";
Ahora vamos a crear un archivo index.php. Este realizará la importación del archivo file.php y luego mostrará otro mensaje. Ambos archivos estarán en el mismo directorio. Usaremos el include primero. El contenido del archivo será este:
<?php
include "file.php";
echo "<br/>";
echo "Hcode Treinamentos";
Si accedemos a este archivo en nuestro navegador, veremos el siguiente resultado:
El código funcionó sin problemas. Ahora vamos a provocar un error. Haremos el include del archivo file1.php, que no existe:
include "file1.php";
Si actualizamos el navegador, este será el resultado:
Se devolvió un warning informándonos que el archivo no existe. Sin embargo, observe que la cadena “Hcode Treinamentos” se mostró normalmente, lo que indica que la ejecución de nuestro código continuó.
Ahora sustituiremos el include por un require, y provocaremos el mismo error. El código quedará así:
require "file1.php";
Tras este cambio, actualizaremos el navegador. Y ahora veremos lo siguiente:
Note que ahora se devolvió un “Fatal error”. Además, la cadena “Hcode Treinamentos” no se mostró, lo que indica que la ejecución de nuestro código se canceló debido a este problema. Así, vemos en la práctica la diferencia entre el include y el require. Analizando cada situación, podremos decidir cuándo usaremos uno u otro.
include_once y require_once
Otro punto importante sobre el include y el require es que ambos tienen una declaración con el sufijo “_once”. La palabra “once” significa básicamente “una vez”. Cuando usamos este sufijo, garantizamos que el archivo deseado sea importado solo una vez en nuestra aplicación. Esto es muy interesante porque puede ser que, sin darnos cuenta, realicemos la importación del mismo archivo dos veces. Esto puede generar un mensaje de error en el navegador, o el script del archivo importado se ejecute dos veces, lo que puede causar problemas. Al usar el include_once o require_once, anulamos la posibilidad de que esto ocurra. Así, si puede elegir, prefiera usar estas declaraciones con el sufijo “_once”.
Conclusión
Realizar importaciones es una de las acciones que más realizamos en nuestros proyectos. Y cuanto más crecen nuestros proyectos, más necesarias se vuelven las importaciones. Es bueno saber que PHP nos ofrece recursos muy poderosos para ello y en este artículo vimos cuáles son estos recursos y las diferencias entre ellos. Recordando que puede aprender mucho más sobre los recursos de PHP en nuestro Curso Completo de PHP 7. Esperamos que hayan disfrutado de este contenido y gracias por haber leído hasta aquí.
Hasta el próximo artículo :)