En PHP:
require
vs. include
?require_once
vs. include_once
?También hay require
e include_once
.
Así que tu pregunta debería ser...
require
frente a include
?require_once
frente a require
?La respuesta a la pregunta 1 está descrita aquí.
La función require() es idéntica a include(), excepto que maneja los errores de manera diferente. Si se produce un error, la función include() genera una advertencia, pero el script continuará su ejecución. La función require() genera un error fatal, y el script se detendrá.
La respuesta a la pregunta 2 se puede encontrar aquí.
La sentencia require_once() es idéntica a require() excepto que PHP comprobará si el archivo ya ha sido incluido, y si es así, no lo incluirá (requerirá) de nuevo.
Diferencia entre las funciones _once y sin funciones _once: sin _once el código se incluirá de nuevo mientras que con las funciones _once PHP mantiene un registro de los archivos incluidos y lo incluirá sólo una vez.
Diferencia entre require e include: Si un archivo requerido no se encuentra PHP emitirá un error fatal mientras que para incluir sólo se emitirá una advertencia.
La diferencia está en el error que generan los comandos. Con require
, el archivo que se quiere utilizar es realmente necesario y por tanto genera un E_ERROR
si no se encuentra.
require()
es idéntico ainclude()
excepto que si falla también producirá un error fatal de nivelE_ERROR
.
include
sólo genera un error E_WARNING
si falla, lo que es más o menos silencioso.
Así que úselo si el archivo es necesario para que el resto del código funcione y quiere que el script falle si el archivo no está disponible.
Para *_once()
:
include_once()
puede usarse en casos en los que el mismo archivo puede ser incluido y evaluado más de una vez durante una ejecución particular de un script, por lo que en este caso puede ayudar a evitar problemas como redefiniciones de funciones, reasignaciones de valores de variables, etc.
Lo mismo se aplica a require_once()
por supuesto.
Referencia: require()
, include_once()