2010-09-03 12 views
165

¿Hay alguna diferencia entre ellos? ¿Usarlos es una cuestión de preferencia? ¿El uso de uno sobre el otro produce alguna ventaja? ¿Qué es mejor para la seguridad?Diferencia entre "incluir" y "requerir" en php

+4

posible duplicado de [¿Cuándo debo usar require_once vs include?] (Http://stackoverflow.com/questions/2418473/when-should-i-use-require-once-vs-include) – Gordon

+3

Utilizar siempre "require ". "incluir" es tan conveniente como una puerta eléctrica en una sauna. –

+2

@MarcoMariani ¿Cómo sería eso inconveniente? Es probable que esté claro, simplemente no lo estoy viendo. ¿Quizás el vapor? –

Respuesta

138

obtendrán las diferencias explicadas en el manual detallado PHP en the page of require:

require es idéntica a include excepto en caso de fallo también producirá un error de nivel E_COMPILE_ERROR fatal. En otras palabras, detendrá la secuencia de comandos mientras que include solo emite una advertencia (E_WARNING) que permite que la secuencia de comandos continúe.

Ver @efritz's answer para un ejemplo

+5

http://www.tiposaurus.co.uk/2011/04/04/the-difference-between-require-and-include/ "La diferencia clave entre require() e include() es que si necesita() un archivo que no se puede cargar (por ejemplo, si no está allí) genera un error fatal que detendrá la ejecución del completamente, y no se generarán más resultados. Por otro lado, si incluye() un archivo que no se puede cargar, esto generará una advertencia y continuará construyendo la página ". – stormwild

+3

"Lo que debe usar depende de la situación; require() es más adecuado para cargar archivos que son esenciales para el resto de la página; por ejemplo, si tiene un sitio web impulsado por base de datos y luego require() para incluir un archivo que contenga el inicio de sesión y la contraseña de la base de datos son claramente preferibles a usar include(). Si utilizó include() en esta situación, puede terminar generando más advertencias y errores de los que tenía previsto ". – stormwild

+3

' cHao

175

require arrojará un error grave de PHP si el archivo no se puede cargar. (La ejecución se detiene)

include produce una advertencia si el archivo no se puede cargar. (La ejecución continúa)

Aquí es un buen illustration of include and require difference:

enter image description here

Desde:Difference require vs. include php (by Robert; Nov 2012)

+1

el enlace está roto –

+0

Es una respuesta de seis años ... – efritz

+0

Vea una diferencia de captura de pantalla entre función de incluir y requerir, http://whats-online.info/science-and-tutorials/83/Free-Beginner -PHP-Tutoriales --- Incluir-y-requerir-funciones/... –

4

Uso include si no te importa la secuencia de comandos de continuar sin cargar el archivo (en caso de que no exista, etc.) y que puede (aunque no debería) en vivo con un mensaje de error de advertencia que se muestra.

El uso de require significa que la secuencia de comandos se detendrá si no puede cargar el archivo especificado y arroja un error fatal.

1

Como otros señalaron, la única diferencia es que require arroja un error fatal e incluye: una advertencia que se puede atrapar. En cuanto a cuál usar, mi consejo es que se quede incluido. ¿Por qué? porque puede detectar una advertencia y producir un comentario significativo para los usuarios finales. Considere

// Example 1. 
    // users see a standard php error message or a blank screen 
    // depending on your display_errors setting 
    require 'not_there'; 


    // Example 2. 
    // users see a meaningful error message 
    try { 
     include 'not_there'; 
    } catch(Exception $e) { 
    echo "something strange happened!"; 
    } 

NB: por ejemplo 2 a trabajar es necesario instalar un controlador de errores a excepciones, tal como se describe aquí http://www.php.net/manual/en/class.errorexception.php

function exception_error_handler($errno, $errstr, $errfile, $errline) { 
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline); 
    } 
    set_error_handler("exception_error_handler"); 
+0

En el nivel de inclusión no es un gran lugar para saber que el archivo que está esperando no está allí. Ningún problema en su ejemplo es uno para empujar a los visitantes de su sitio web. – Kzqai

3

La diferencia clave entre require() y include() es que si require() un archivo que no se puede cargar (por ejemplo, si no está allí) genera un error fatal que detendrá la ejecución de la página por completo, y no se generará más resultados. Por otro lado, si include() un archivo no se puede cargar, entonces esto simplemente generará una advertencia y continuará construyendo la página.

-2

En caso de Incluir el programa no terminará y aparecerá una advertencia en el navegador, Por otro lado, Requerir programa terminará y mostrará un error fatal en caso de archivo no encontrado.

+0

¿De verdad tienes que encontrar una pregunta de 2 años y medio para repetir lo que 2/3 de las respuestas ya han dicho ...? – cHao

+4

¡Aww, él es un novato! Probablemente aún no comprenda el concepto de SO. –

+2

Lo digo en palabras simples ... !!! –

0
<?PHP 
echo "Firstline"; 
include('classes/connection.php'); 
echo "I will run if include but not on Require"; 
?> 

Un ejemplo práctico muy simple con el código. Aparecerá el primer eco. No importa si usa include o require porque se ejecuta antes de incluir o requerido.

Para comprobar el resultado, en la segunda línea de un código, proporcionar intencionadamente la ruta incorrecta al archivo o cometer un error en el nombre del archivo. Por lo tanto, el segundo eco que se muestre o no será totalmente dependiente de si usa requiere o incluya.

Si utiliza requieren el segundo eco no ejecutará pero si se utiliza incluyen no importa qué error se verá el resultado del segundo eco también.

Cuestiones relacionadas