1. Aperçu
La performance de require() est similaire à celle de include(), car les deux incluent et exécutent le fichier spécifié. La différence est que pour include(), le fichier est lu et évalué chaque fois qu'il est exécuté ; alors que pour require(), le fichier n'est traité qu'une seule fois (en fait, le contenu du fichier remplace l'instruction require()). Cela signifie que s'il y a du code susceptible d'être exécuté plusieurs fois, utiliser require() est plus efficace. En revanche, si vous devez lire différents fichiers à chaque exécution du code, ou avoir une boucle qui parcourt un groupe de fichiers, utilisez include().
L'utilisation de require() est la suivante :
require("myfile.php")
Cette instruction est généralement placée tout au début d'un script PHP. Avant que le programme PHP ne s'exécute, il lit d'abord le fichier introduit par l'instruction require(), ce qui en fait une partie du fichier de script PHP.
L'utilisation de include() est la même que require, par exemple :
include("myfile.php")
Cette instruction est généralement placée dans la section de traitement du contrôle de flux.
Le fichier de script PHP ne lit le fichier inclus que lorsqu'il rencontre l'instruction include(). Cette approche peut simplifier le déroulement de l'exécution du programme.
- incluceCharger lorsque nécessaire
- requireCharger au début
- _onceLe suffixe indique que les fichiers déjà chargés ne sont pas chargés à nouveau
Le système PHP dispose d'un processus de pseudo-compilation lors du chargement des programmes PHP, ce qui peut accélérer l'exécution du programme. Cependant, les fichiers inclus avec include sont toujours interprétés et exécutés. Si une erreur se produit dans un fichier inclus, le programme principal continue de s'exécuter ; si une erreur se produit dans un fichier requis, le programme principal s'arrête. Par conséquent, si une erreur dans le fichier inclus a peu d'impact sur le système (comme les fichiers d'interface), utilisez include ; sinon, utilisez require.
Les instructions require() et include() sont des constructions du langage, et non de véritables fonctions. Comme d'autres constructions du langage en PHP, par exemple echo() peut utiliser la forme echo("ab") ou la forme echo "abc" pour afficher la chaîne abc. Les instructions require() et include() peuvent également prendre des paramètres directement sans parenthèses.
Les instructions include_once() et require_once() incluent et exécutent également le fichier spécifié pendant l'exécution du script. Ce comportement est similaire à include() et require(), et l'utilisation est la même. La seule différence est que si le code du fichier a déjà été inclus, il ne sera pas inclus à nouveau. Ces deux instructions doivent être utilisées lorsque, pendant l'exécution du script, le même fichier peut être inclus plus d'une fois, afin de garantir qu'il n'est inclus qu'une seule fois et d'éviter des problèmes tels que la redéfinition de fonctions et la réaffectation de variables.
2. Explication détaillée
2.1 Rapport d'erreurs
includeLors de l'inclusion d'un fichier, si une erreur est rencontrée, un avertissement est donné et le code ci-dessous continue de s'exécuter.
requireLors de l'inclusion d'un fichier, si une erreur est rencontrée, un avertissement est donné et le code ci-dessous cesse de s'exécuter.
Prenons un exemple. Écrivez deux fichiers PHP nommés test-include.php et test-require.php. Notez que dans le même répertoire, il ne doit pas y avoir de fichier nommé test-nothing.php.
test-include.php
test-require.php
Parcourezhttp://localhost/test-include.php, parce que le fichier test-nothing.php n'a pas été trouvé, nous avons vu un message d'erreur, et simultanément, abc était affiché sous le message d'erreur. Ce que vous voyez peut ressembler à ce qui suit :
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
Parcourez http://localhost/test-require.php. Parce que le fichier test-nothing.php n'a pas été trouvé, nous avons vu un message d'erreur, mais abc n'était pas affiché sous le message d'erreur. Ce que vous voyez peut ressembler à ce qui suit :
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éthodes d'inclusion de fichiers
Lorsque include() s'exécute, le fichier référencé doit être lu et évalué à chaque fois ; lorsque require() s'exécute, le fichier référencé n'est traité qu'une seule fois (en fait, lors de l'exécution, le contenu du fichier référencé remplace l'instruction require()). On peut voir que si vous avez du code qui contient l'une de ces directives et qui peut être exécuté plusieurs fois, utiliser require() est plus efficace. Si vous devez lire un fichier différent à chaque exécution du code, ou si vous avez une boucle qui parcourt un groupe de fichiers, utilisez include(). Vous pouvez définir une variable pour le nom du fichier que vous souhaitez inclure et utiliser cette variable lorsque le paramètre est include().
Lien original : https://blog.csdn.net/shenpengchao/article/details/52326233