En PHP:
- ¿Cuándo debo usar
require
vs.include
? - ¿Cuándo debo usar
require_once
vs.include_once
?
php
include
require
require-once
Scott B
fuente
fuente
Respuestas:
Hay
require
yinclude_once
también.Entonces tu pregunta debería ser ...
require
vs.include
?require_once
vs.require
La respuesta a 1 se describe aquí .
La respuesta a 2 se puede encontrar aquí .
fuente
require_once()
será el más rápido de los dosUtilizar
requerirá
cuando el archivo se requiere por su aplicación, por ejemplo, una plantilla de mensaje importante o un archivo que contiene las variables de configuración sin la cual la aplicación podría romper.
require_once
cuando el archivo contiene contenido que produciría un error en la inclusión posterior, por ejemplo,
function important() { /* important code */}
definitivamente es necesario en su aplicación, pero dado que las funciones no se pueden volver a declarar, no se deben volver a incluir.incluir cuando no se requiere el archivo y el flujo de la aplicación debe continuar cuando no se encuentra, por ejemplo,
ideal para plantillas que hacen referencia a variables del alcance actual o algo así
include_once
dependencias opcionales que producirían errores en la carga posterior o tal vez la inclusión remota de archivos que no desea que ocurra dos veces debido a la sobrecarga de HTTP
Pero básicamente, depende de ti cuándo usar cuál.
fuente
include
?include_once
?require
?require_once
?Mi sugerencia es usar el
require_once
99.9% del tiempo.Usar
require
oinclude
en su lugar implica que su código no es reutilizable en otro lugar, es decir, que los scripts que está ejecutando realmente ejecutan código en lugar de poner a disposición una clase o algunas bibliotecas de funciones.Si necesita / incluye código que se ejecute en el acto, ese 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, el uso en
include_once
su mayoría va a retrasar en qué parte de la pila encuentra errores / errores. ¿Desea saber que la funcióndo_cool_stuff()
no está disponible cuando vaya a llamarla más tarde, o en 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, así que solo úselorequire_once
.Alternativamente, en la OOP moderna, solo carga automáticamente tus clases al usarlas.
fuente
include
familia es por lo general una absoluta mala idea (porque es bastante raro para ser incluidos archivos que tienen alguna posibilidad de no existir), y que derequire_once
yrequire
, se debe utilizarrequire_once
si se incluyen los archivos que definen las funciones o clases para ser se usa en otros lugares, o crea instancias de singletons como objetos de conexión de base de datos, y se usarequire
para incluir archivos que hacen cosas inmediatamente cuando se incluyen. En cualquier aplicación web grande, este último tipo de inclusión es inusual.require_once
es probable que el candidato sea usado casi todo el tiempo. Dadas las pequeñas diferencias generales entre las opciones,require
garantiza que el script se detenga, no puedo pensar en muchos escenarios en los que una aplicación puede sobrevivir sin incluir un archivo. Y_once
protege de problemas de engaño. Cualquiera que no esté de acuerdo probablemente sepa lo que está haciendo, por lo que puede elegir el que mejor se adapte a la aplicación o al escenario.Diferencia entre _once funciones y sin _once funciones: sin _once código se incluirá nuevamente mientras que con _once funciones PHP realiza un seguimiento de los archivos incluidos y lo incluirá solo una vez.
Diferencia entre require e include: si no se encuentra un archivo requerido, PHP emitirá un error fatal mientras que para incluir solo se emitirá una advertencia.
fuente
include()
lanzará una advertencia si no puede incluir el archivo, pero se ejecutará el resto del script.require()
lanzaráE_COMPILE_ERROR
y detendrá el script si no puede incluir el archivo.Los
include_once()
yrequire_once()
las funciones que no se incluyen en el archivo una segunda vez si ya se ha incluido.Consulte las siguientes páginas de documentación:
fuente
Siempre que lo esté usando,
require_once()
puede usarlo 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.y en otro archivo que he llamado test2.php
ya que está viendo los m que requieren el archivo test1 dos veces, pero el archivo incluirá el test1 una vez y para llamar por segunda vez esto se ignorará. Y sin detenerse mostrará la salida una sola vez.
Siempre que esté usando 'include_once ()' puede usarse 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.
Y en otro archivo que he llamado test4.php
mientras mira la m, incluido el archivo test3, incluirá el archivo una sola vez, pero detendrá la ejecución posterior.
fuente
Use "incluir" para plantillas PHP reutilizables . Use "require" 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".
fuente
Debe mantener las definiciones de clase y función organizadas en archivos.
Se usa
require_once()
para cargar dependencias (clases, funciones, constantes).Úselo
require()
para cargar archivos tipo plantilla .Se usa
include_once()
para cargar dependencias opcionales (clases, funciones, constantes).Úselo
include()
para cargar archivos opcionales tipo plantilla .fuente
Una respuesta después de 7 años para 2018
Esta pregunta se hizo hace siete años, y ninguna de las respuestas proporciona ayuda práctica para la pregunta. En la programación moderna de PHP, usted usa principalmente
required_once
solo una vez para incluir su clase de autocargador (el autocargador de compositor a menudo), y cargará todas sus clases y funciones (los archivos de funciones deben agregarse explícitamente alcomposer.json
archivo para estar disponibles en todos los demás archivos). Si por alguna razón su clase no se puede cargar desde el autocargador, userequire_once
para cargarla.Hay algunas ocasiones que necesitamos usar
require
. Por ejemplo, si tiene una definición de matriz realmente grande y no desea agregarla a su código fuente de definición de clase, puede:Si el archivo que tiene la intención de incluir contiene algo ejecutable o declara algunas variables que casi siempre necesita usar
require
, porque si lo usarequire_once
aparte del primer lugar, su código no se ejecutará y / o sus variables no se iniciarán en silencio, causando errores que son absolutamente difíciles de identificar.No hay un caso de uso práctico para
include
yinclude_once
realmente.fuente
include()
, envuelto en un búfer de salida para implementar su motor de plantillas.require()
para dividir archivos grandes.require_once
Enfrenté el mismo problema al usar para PHPMailer dentro de una función, y mi autocargador define la$mail
variable necesaria más adelante en el código, por lo querequire_once
se ignora el siguiente , que$mail
no se inicializó. la solución fue simplemente usarrequire
después de la llamada a la función.require
en esos casos?La diferencia está en el error que generan los comandos. Con
require
, el archivo que desea usar es realmente obligatorio y, por lo tanto, genera un archivoE_ERROR
si no se encuentra.include
solo genera unE_WARNING
error si falla que es más o menos silencioso.Por lo tanto, úselo si el archivo es necesario para que el código restante funcione y desea que el script falle, el archivo no está disponible.
Para
*_once()
:Lo mismo se aplica, por
require_once()
supuesto.Referencia:
require()
,include_once()
fuente
require
da E_COMPILE_ERROR, no E_ERROR.Con require, el archivo debe existir, si no es así, aparecerá un error; mientras que con include: si el archivo no existe, la página continuará cargándose.
fuente
Requerir partes críticas, como autorización e incluir todas las demás.
Las inclusiones múltiples son simplemente un diseño muy malo y deben evitarse en absoluto. Entonces, * _una vez realmente no importa.
fuente
Incluir / Requerir puede incluir el mismo archivo más de una vez también:
require_once / include_once
fuente
include()
generará una advertencia cuando no encuentre un archivo, perorequire_once()
generará un error fatal.Otra cosa es si el archivo se incluye antes. Entonces
require_once()
no lo incluirá de nuevo.fuente
Estaba usando la función de la siguiente manera:
Hubo valores constantes declarados en xyz.php.
Tengo que llamar a esta función doSomething () desde otro archivo de script PHP.
Pero observé el comportamiento al llamar a esta función en un bucle, para la primera iteración doSomething () estaba obteniendo valores constantes dentro
xyz.php
, pero luego cada iteracióndoSomething()
no pudo obtener los valores constantes declarados enxyz.php
.Resolví mi problema cambiando de
require_once()
ainclude()
, eldoSomething()
código actualizado es el siguiente:Ahora, cada llamada a la iteración
doSomething()
obtiene los valores constantes definidos enxyz.php
.fuente
Del manual :
Lo mismo es cierto para las
_once()
variantes.fuente
En la era de los
PSR-0 / PSR-4
cargadores automáticos, puede ser completamente innecesario usar cualquiera de las declaraciones si todo lo que necesita es hacer que algunas funciones / clases estén disponibles para su código (por supuesto, aún necesitarequire_once
cargarse automáticamente en su archivo de arranque yinclude
plantillas si todavía uso PHP como motor de plantillas).fuente
¿Cuándo se debe usar
require
oinclude
?Las funciones
require
yinclude
realizan la misma tarea, es decir, incluyen y evalúan el archivo especificado, pero la diferencia esrequire
que causará un error grave cuando la ubicación del archivo especificado no sea válida o por cualquier error, mientrasinclude
que generará una advertencia y continuará la ejecución del código.Por lo tanto, puede usar la
require
función en el caso en que el archivo que está tratando de incluir es el corazón del sistema y puede causar un gran impacto en el resto del código y puede usar lainclude
función cuando el archivo que está tratando de incluir es un archivo simple que contiene un código menos importante.Y mi recomendación personal (para un código menos importante) es ir a la
require
función en todas partes de su código mientras está en la fase de desarrollo, de modo que pueda depurar el código y luego reemplazar todas lasrequire
funciones porinclude
función antes de pasarlo a producción, de modo que si se pierde cualquier error no afectará al usuario final y el resto del código se ejecuta correctamente ...¿Cuándo se debe usar
require_once
orequire
?La diferencia básica entre
require
yrequire_once
serequire_once
comprobará si el archivo ya está incluido o no, si ya se incluye a continuación, no incluirá el archivo, mientras que larequire
función incluirá el archivo independientemente de si el archivo ya está incluido o no.Por lo tanto, en los casos en que desee incluir algún fragmento de código una y otra vez, use la
require
función, mientras que si desea incluir algún código solo una vez en su código, úselorequire_once
.fuente
Use la función require cuando necesite cargar cualquier clase, función o dependencia.
Use la función de inclusión cuando desee cargar un archivo con estilo de plantilla
Si todavía está confundido, simplemente use require_once todo el tiempo.
fuente
Son todas formas de incluir archivos.
Requerir significa que lo necesita. Require_once significa que lo necesitará, pero solo lo requiere una vez. Incluir significa que incluirá un archivo pero no lo necesita para continuar.
Ejemplos:
También hay una función include_once que incluye un archivo una vez.
No use letras mayúsculas donde las tengo mientras escribo desde mi teléfono.
fuente
Una cosa que noté, cuando uso include solo puedo acceder a las funciones de los archivos incluidos desde el archivo que lo incluye. Con require_once, puedo ejecutar esa función en un segundo archivo required_once.
también: recomiendo agregar
Porque cuando require_once mata la página, a veces puede hacer eco en el directorio de los archivos de su sitio web
Aquí hay una función personalizada que hice para requerir archivos:
ejemplo de uso:
fuente
Básicamente, si necesita una ruta incorrecta, PHP arroja un error fatal y se llama a la función de apagado, pero cuando incluye una ruta incorrecta, PHP continuará la ejecución, pero solo mostrará una advertencia de que el archivo no existe.
A partir de la palabra en inglés require , se le dice a PHP que la ejecución de la página o el archivo depende del archivo requerido.
Desde mi experiencia, es normal requerir archivos importantes como archivos de configuración, clases de bases de datos y otras utilidades importantes.
fuente
A menudo se trata de si desea cargar una biblioteca de cliente condicionalmente, o cargarla si la va a usar o no.
Aquí hay un ejemplo concreto; elaborando sobre lo que dijo pcj.
Supongamos que tiene un archivo de configuración que almacena el nombre de usuario y la contraseña de su base de datos (conf.php):
Y una clase con una función estática que usa la base de datos:
Y esa función estática se usa dentro de otra función que se llama iterativamente dentro de un bucle:
Solo puede requerir / incluir la clase una vez. Si lo requiere / lo incluye en cada iteración de su ciclo, obtendrá un error. Sin embargo, debe incluir su archivo conf cada vez que se llama a la función estática.
Por supuesto, moverlo fuera de la función podría ser una solución a ese problema:
A menos que esté preocupado por la sobrecarga de cargar una clase que solo se puede usar en ciertas condiciones y no desea cargarla cuando no lo está.
fuente
require
tiene una sobrecarga mayor queinclude
, ya que primero debe analizar el archivo. Reemplazarrequires
conincludes
frecuencia es una buena técnica de optimización.fuente
require
no analiza el archivo más deinclude
lo que lo hace. Las_once
versiones de esas funciones tienen un poco de sobrecarga, pero como otros han dicho, es casi insignificante en la mayoría de las aplicaciones.Solo use require e include.
Porque piense cómo trabajar con include_once o require_once. Eso está buscando datos de registro que guarden los archivos PHP incluidos o requeridos. Entonces eso es más lento que incluir y requerir.
Solo usando así ...
fuente