1. Resumen
El rendimiento de la declaración require() es similar al de include(), ambas incluyen y ejecutan el archivo especificado. La diferencia es que, para include(), cada vez que se ejecuta el archivo se debe leer y evaluar; mientras que para require(), el archivo se procesa solo una vez (en realidad, el contenido del archivo reemplaza a la declaración require()). Esto significa que si el código puede ejecutarse varias veces, es más eficiente usar require(). Por otro lado, si cada ejecución del código lee un archivo diferente o hay un bucle que itera sobre un conjunto de archivos, se debe usar include().
El método de uso de require() es, por ejemplo:
require("myfile.php")
Esta declaración generalmente se coloca al principio del script PHP. Antes de que el programa PHP se ejecute, primero lee el archivo introducido por la declaración require() y lo convierte en parte del archivo de script PHP.
El método de uso de include() es igual que el de require, por ejemplo:
include("myfile.php")
Esta declaración generalmente se coloca en el bloque de procesamiento del control de flujo.
El archivo de script PHP solo lee el archivo incluido cuando encuentra la declaración include(). De esta manera, se puede simplificar el flujo de ejecución del programa.
- incluceCargar cuando se necesite
- requireCargar desde el principio
- _onceEl sufijo indica que lo que ya se ha cargado no se vuelve a cargar.
El sistema PHP tiene un proceso de pseudo-compilación al cargar programas PHP, lo que puede acelerar la ejecución del programa. Pero el archivo de include todavía se ejecuta de forma interpretada. Si el archivo incluido con include tiene un error, el programa principal continúa ejecutándose; si el archivo incluido con require tiene un error, el programa principal se detiene. Por lo tanto, si el error en el archivo incluido no afecta mucho al sistema (como archivos de interfaz), use include; de lo contrario, use require.
Las declaraciones require() e include() son estructuras de lenguaje, no funciones reales. Al igual que otras estructuras de lenguaje en PHP, por ejemplo, echo() puede usar la forma echo("ab") o usar la forma echo "abc" para generar la cadena abc. Las declaraciones require() e include() también pueden agregar parámetros directamente sin paréntesis.
Las declaraciones include_once() y require_once() también incluyen y ejecutan el archivo especificado durante la ejecución del script. Este comportamiento es similar a include() y require(), y la forma de uso es la misma. La única diferencia es que si el código del archivo ya ha sido incluido, no se incluirá nuevamente. Estas dos declaraciones deben usarse cuando, durante la ejecución del script, es posible que el mismo archivo se incluya más de una vez, para garantizar que se incluya solo una vez y así evitar problemas como la redefinición de funciones y la reasignación de variables.
2. Explicación detallada
2.1 Errores
includeAl incluir el archivo, si se encuentra un error, se mostrará un aviso y se continuará ejecutando el código siguiente.
requireAl incluir el archivo, si se encuentra un error, se mostrará un aviso y se detendrá la ejecución del código siguiente.
Para ilustrarlo con un ejemplo, cree dos archivos PHP llamados test-include.php y test-require.php. Tenga en cuenta que en el mismo directorio no debe existir un archivo llamado test-nothing.php.
test-include.php
test-require.php
Visitarhttp://localhost/test-include.phpComo no se encontró el archivo test-nothing.php, vimos el mensaje de error y, debajo del mensaje de error, se mostraba abc. Lo que ves puede ser similar a lo siguiente:
Warning: include(test-nothing.php) [function.include]: failed to open stream: No such file or directory in D:\www\test-include.php on line 2 Warning: include() [function.include]: Failed opening 'test-nothing.php' for inclusion (include_path='.;C:\php5\pear') in D:\www\test-include.php on line 2 abc
Visite http://localhost/test-require.php. Como no se encontró el archivo test-nothing.php, vimos el mensaje de error, pero debajo del mensaje de error no se mostraba abc. Lo que ves puede ser similar a lo siguiente:
Warning: require(test-nothing.php) [function.require]: failed to open stream: No such file or directory in D:\www\test-require.php on line 2 Fatal error: require() [function.require]: Failed opening required 'test-nothing' (include_path='.;C:\php5\pear') in D:\www\test-require.php on line 2
2.2 Método de referencia de archivos
Cuando se ejecuta include(), el archivo referenciado debe leerse y evaluarse cada vez; cuando se ejecuta require(), el archivo referenciado solo se procesa una vez (en realidad, el contenido del archivo referenciado reemplaza a la declaración require()). Se puede observar que si hay código que contiene una de estas instrucciones y que puede ejecutarse varias veces, usar require() es más eficiente. Si cada vez que se ejecuta el código se desea leer archivos diferentes, o hay un bucle que itera sobre un grupo de archivos, use include(). Se puede establecer una variable con el nombre del archivo que se desea incluir y usar esa variable como parámetro de include().
Enlace original: https://blog.csdn.net/shenpengchao/article/details/52326233