Uno de los beneficios que tenemos al usar php y otros lenguajes de programación es que podemos incluir código que podemos reutilizar a lo largo de distintas páginas, imaginemos un sitio web en HTML y agregar una nueva página o sección si queríamos agregarlo al menú teníamos que hacer el cambio en todas las páginas que usaran el mismo menú o aplicar los famosos iframes (no lo haga compa).

Pero bueno regresemos al tema, PHP tiene 4 funciones que nos ayudan al momento de agregar contenido que básicamente hacen lo mismo y son require(), include(), require_once() e include_once() y se usan de la siguiente manera:

require("archivo.php");
include("archivo.php");
require_once("archivo.php");
include_once("archivo.php");

¿Cuál es la diferencia entre require() e include()?

Ambos agregan el código dentro del archivo donde lo estamos llamando pero tienen una ligera diferencia:
require() nos dice que el archivo es requerido y que es obligatorio que exista para el funcionamiento del programa, esto ocasiona que si el archivo no existe o no se encuentra en la ruta establecida nos muestre un error “PHP Fatal error” deteniendo es script.

include() al igual que require() agrega el código pero en caso de no encontrarlo solamente nos envía un warning permitiendo que todo continue aunque esto ocasione que no funcione correctamente o genere otros errores.

¿Qué pasa entonces con require_once() e include_once()?

Ambos hacen la misma función que los mencionados anteriormente con la diferencia de que al utilizarlos impide que se incluya el código llamado más de una vez aunque ambas funciones consumen más recursos.

¿Entonces qué uso require() o include()?

Puedes usar cualquiera de los dos pero si vamos a incluir un código es porque lo vamos a necesitar por lo que sería require() la opción principal aunque podríamos utilizar include() para códigos no esenciales o que no afecten el funcionamiento del resto del script.

Por ejemplo require() para una clase que se conecta a la base de datos y maneja nuestro sistema de usuarios e include() para un fragmento del footer que solamente incluye html.