Pregunta Diferencia entre require, include, require_once e include_once?


En PHP:

  • Cuando debería usar require vs. include?
  • Cuando debería usar require_once vs. include_once?

962
2018-03-10 16:13


origen


Respuestas:


Existen require y include_once también.

Entonces tu pregunta debería ser ...

  1. Cuando debería usar require vs. include?
  2. Cuando debería usar require_once vs. require

La respuesta a 1 se describe aquí.

La función require () es idéntica a include (), excepto que maneja los errores de forma diferente. Si se produce un error, la función include () genera una advertencia, pero la secuencia de comandos continuará la ejecución. El requerimiento () genera un error fatal, y el script se detendrá.

La respuesta a 2 se puede encontrar aquí.

La instrucción require_once () es idéntica a require (), excepto que PHP verificará si el archivo ya se ha incluido y, de ser así, no incluirá (requerirá) nuevamente.


1172
2018-03-10 16:17



Utilizar

  • exigir
    cuando el archivo es necesario por su aplicación, p. una plantilla de mensaje importante o un archivo que contiene variables de configuración sin las cuales se rompería la aplicación.

  • requerir una vez
    cuando el archivo contiene contenido que produciría un error en la inclusión posterior, p. function important() { /* important code */} es definitivamente necesario en su aplicación, pero dado que las funciones no pueden ser redeclaradas no deben incluirse nuevamente.

  • incluir cuando el archivo no es necesario y el flujo de la aplicación debe continuar cuando no se encuentra, p.
    ideal para plantillas que hacen referencia a variables del alcance actual o algo

  • include_once
    dependencias opcionales que producirían errores en la carga posterior o quizás la inclusión remota de archivos que no desea que sucedan dos veces debido a la sobrecarga de HTTP

Pero básicamente, depende de usted cuándo usar cuál.


327
2018-03-10 16:25



Mi sugerencia es solo usar require_once 99.9% del tiempo.

Utilizando require o include en su lugar, implica que su código no se puede volver a usar en ningún otro lugar, es decir, que los scripts que está trayendo en realidad ejecutar código en lugar de hacer disponible una clase o algunas bibliotecas de funciones.

Si necesita / incluye código que se ejecuta en el lugar, es un código de procedimiento, y necesita conocer un nuevo paradigma. Al igual que la programación orientada a objetos, la programación basada en funciones o la programación funcional.

Si ya está haciendo OO o programación funcional, usando include_once va a ser mayormente demorando donde en la pila encuentras errores / errores. ¿Quieres saber que la función do_cool_stuff() no está disponible cuando va a llamar para más tarde, o el momento en que espera que esté disponible al requerir la biblioteca? En general, es mejor saber de inmediato si algo que necesita y espera no está disponible, entonces solo use require_once.

Alternativamente, en OOP moderno, solo autocarga tus clases sobre el uso.


269
2018-03-10 16:46



Diferencia entre las funciones _once y sin las funciones _once: sin _once código se incluirá de nuevo, mientras que con _once functions PHP realiza un seguimiento de los archivos incluidos y lo incluirá una sola vez.

Diferencia entre require e include: Si no se encuentra un archivo requerido, PHP emitirá un error fatal, mientras que para incluirlo solo se emitirá una advertencia.


26
2018-03-10 16:18



include() lanzará una advertencia si no puede incluir el archivo, pero se ejecutará el resto del script.

require() arrojará un E_COMPILE_ERROR y detener el script si no puede incluir el archivo.

los include_once() y require_once() las funciones no incluirán el archivo una segunda vez si ya se ha incluido.

Vea las siguientes páginas de documentación:


25
2017-11-03 11:48



Siempre que estés usando require_once() se puede usar en un archivo para incluir otro archivo cuando necesite el archivo llamado solo una vez en el archivo actual. Aquí en el ejemplo tengo un test1.php.

<?php  
echo "today is:".date("Y-m-d");  
?>  

y en otro archivo que he llamado test2.php

<?php  
require_once('test1.php');  
require_once('test1.php');  
?>

ya que está viendo la m que requiere el archivo test1 dos veces, pero el archivo incluirá la prueba 1 una vez y para llamar por segunda vez se ignorará. Y sin detenerse, mostrará la salida una sola vez.

Siempre que use 'include_once () `se puede usar en un archivo para incluir otro archivo cuando necesite el archivo llamado más de una vez en el archivo actual. Aquí, en el ejemplo, tengo un archivo llamado test3.php.

<?php  
echo "today is:".date("Y-m-d");  
?> 

Y en otro archivo que he llamado test4.php

<?php  
include_once('test3.php');  
include_once('test3.php');  
?>

mientras mira, el m que incluye el archivo test3 incluirá el archivo una sola vez pero detendrá la ejecución posterior.


18
2017-09-29 09:42



Use "incluir" para reutilizar PHP plantillas. Use "requerir" para las bibliotecas requeridas.

"* _once" es bueno, porque comprueba si el archivo ya está cargado o no, pero solo tiene sentido para mí en "require_once".


16
2018-03-10 17:08



La diferencia está en el error que generan los comandos. Con require, el archivo que desea utilizar es realmente necesario y genera un E_ERROR si no se encuentra

require() es idéntico a include()  excepto en caso de falla, también producirá una muerte E_ERROR  error de nivel

include solo genera un E_WARNING error si falla, que es más o menos silencioso.

Así que úsela si el archivo es necesario para hacer que el código restante funcione y desea que la secuencia de comandos falle; el archivo no está disponible.


por *_once():

include_once() puede usarse en casos donde 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 variables, etc.

Lo mismo aplica para require_once() por supuesto.


Referencia: require(), include_once()


11
2018-03-10 16:20