Al realizar desarrollos
en PHP es común encontrarse con las funciones require() e include(),
estas funciones permite agregar en el script donde se insertan todo
el contenido de otro script.
Estas funciones son muy
útiles para agregar archivos con funciones comunes a varios scripts o
para permitir que el código quede más ordenado. Por ejemplo, se
crea una función para verificar si un RUT es válido y esta función
se utiliza en diez script diferentes, en lugar de escribir 10
funciones, se puede crear un script que contenga la función y luego
se agrega el archivo en los script donde se van a utilizar.
Script con la función
valida_rut.
valida_rut.php
<?php
function
valida_rut($in_rut){
.
.
.
}
?>
Utilización de la
función require().
utiliza_valida_rut.php
<?php
require(“ruta/valida_rut.php”);
$rut = '13478217-2';
valida_rut($rut);
?>
Utilización de la
función include().
utiliza_valida_rut.php
<?php
include(“ruta/valida_rut.php”);
$rut = '13478217-2';
valida_rut($rut);
?>
Estas dos funciones
parecieran hacer lo mismo, pero tienen una importante diferencia,
como lo dice su nombre la primera función (require) requiere que el
archivo exista para agregar el archivo, si el archivo no existe el
código presentará un error “PHP Fatal error” y la ejecución
del código se detendrá. La segunda función (include) incluye el
archivo, pero si este archivo no existe enviará un error de tipo
“Warning” lo cual permitirá que el código se siga ejecutando.
Cuando se utiliza la
función require() o include(), es como si ambos script quedarán
convertidos en uno solo, por lo tanto el script padre (quien utiliza
la función require o include) y script hijo (quien es insertado a
través de la función require(“archivo.php”) o
include(“archivo.php”)) tienen acceso a cualquier función que
este en cualquiera de los dos archivos, así como a las funciones que
existan en otros script que han sido agregados tanto en el padre como
en el hijo a través de la función require o include. Esto puede
presentar inconvenientes, por ejemplo si tanto el padre como el hijo
agregan un script llamada repetido.php, todo el código contenido en
repetido.php quedará duplicado, lo cual puede acarrear problemas de
variables duplicadas o funciones duplicadas, por este motivo se debe
tener especial cuidado en la utilización de estas funciones. Para
evitar este tipo de problemas yo evito que los archivos hijos
utilicen las funciones require e include, pero si las agregas con
cuidado, verificando que un archivo padre y uno hijo no contengan los
mismos script no existe ningún problema.
Una opción para evitar
el problema de agregar dos veces el mismo script es utilizar las
funciones require_once o include_once. Estas funciones trabajan
igual que las anteriores con la única diferencia que evalúan si el
archivo ha sido agregado anteriormente y si este es el caso no lo
vuelen a incluir, sin embargo estas funciones son más pesadas y
consumen más recursos lo que implica que deben ser utilizadas solo
cuando sea necesario.
Otro punto que se debe
tener en cuenta a la hora de utilizar las funciones require e include
es la utilización de variables de sesión. Cuando se inicia una
sesión que previamente estaba iniciada se presenta un error de tipo
“Notice”, es posible que al utilizar require o include se inicie
una sesión en el archivo padre y luego en el archivo hijo, lo cual
provocará el error antes mencionado. Con un error de tipo “Notice”
se puede continuar con la ejecución del código, pero es importante
mencionar que esto puede hacer más tediosa la búsqueda de errores
del sistema, porque el log de errores crece mucho más por este tipo
de errores ocultando los errores más graves que pueden perjudicar la
correcta ejecución del sistema.
Referencias:
- http://programacion.jias.es/2012/12/php-diferencias-entre-require-include-require_once-include_once/
"Gracias,
por compartir tus conocimientos"