2010-09-02 16 views
11

Sé que el uso básico de PHP requiere, requiere una vez, incluye e incluye una vez. Pero estoy confundido acerca de cuándo debería usarlos.¿Cuál es la diferencia entre PHP require e include?

Ejemplo: Tengo 3 archivos, por ejemplo: settings.php, database.php, e index.php.

En database.php archivo, escribí:

require_once 'settings.php'; 

y luego en index.php, escribí:

require_once 'settings.php'; 
require_once 'database.php'; 

así que cargar settings.php dos veces, es esta de acuerdo? ¿Algún consejo usando estas funciones?

+0

Las preguntas como esta no deberían ser wiki de la comunidad.No es un gran problema, solo como una pista para el futuro –

+0

thx por información, soy novato en este sitio :) – Vina

Respuesta

17
  • include incluye un archivo y lanza una advertencia si no se ha encontrado el archivo.

  • require incluye un archivo y arroja un error fatal si no se encuentra el archivo.

  • include_once y require_once hacen lo mismo, pero solo si el archivo no se ha cargado todavía.

Sin embargo, la necesidad de que una de las funciones _once es generalmente un signo de un mal diseño. Debes construir tus scripts de una manera que defina claramente qué se incluye en dónde.

Elija un lugar para settings.php para ser incluido - probablemente index.php. No debería ser necesario incluirlo adicionalmente en database.php.

+8

+1. Sin embargo, Nitpick/opinión: no creo que estoy de acuerdo con 'la necesidad de una de las funciones '_once' es generalmente un signo de mal diseño'. Los autocargadores hacen prácticamente lo mismo, después de todo. Yo diría que '_once' siempre debe usarse para archivos que contienen solo declaraciones de funciones/clases/constantes, y los demás para fragmentos de guiones. En cuyo caso yo diría * no * que usa '_once' es usualmente [!] Un signo de mal diseño. '_once' (en ausencia de un autocargador), permite que su código sea decentemente modular. (En este caso particular, estaría de acuerdo en que debería incluirse solo una vez en primer lugar, sin embargo). – pinkgothic

+1

@pinkgothic Tengo que estar en desacuerdo. Los cargadores automáticos funcionan según el mismo principio, * pero * si valen la pena, realizan una comprobación 'class_exists()' antes de intentar una inclusión. En mi experiencia (leer, ¡también * propia * experiencia!) 'Require_once()' * generalmente * significa "No estoy seguro de si este archivo ya se ha incluido en otro punto, porque no tengo una idea completa de la estructura de mi proyecto " por lo que puedo ver, cualquier otro uso de '_once' puede prevenirse comprobando si el recurso que estoy a punto de incluir ya está presente, ya sea una función o una clase. –

+0

Dicho esto, estoy seguro de que hay casos legítimos en los que hacer '_once' es simplemente la solución cada vez más rápida. –

2

No carga settings.php dos veces, como en PHP documentation on require_once;

La declaración require_once() es idéntica a require(), excepto PHP de verificación si el archivo ya ha sido incluido , y si es así, no incluye (requieren) de nuevo.

0

require_once verificaría si el archivo ya está incluido y no lo incluirá nuevamente, así que no se preocupe, no cargará settings.php dos veces.

0

si el archivo es importante, creo que se debe utilizar "requerir",
pero si no es así, yo siempre uso incluyen, como la de Peka respondieron
requieren incluye un archivo y genera un error fatal si no se encuentra el archivo .

-2

include_once y require_once uso en Php para agregar una página a otra página ejemplo: desea agregar la página de conexión de la base de datos conn.php en la página de edición edit.php puede usarla. Pero hay diferentes entre include_once y require_once si la función include_once obtiene algún error, lo advertirá y ejecutará el código, pero require_once function find any error detendrá el script y no ejecutará el código.

Cuestiones relacionadas