En PHP, les fonctions include et require se confondent facilement. Ci-dessous, j'utiliserai un exemple classique pour illustrer en profondeur leurs différences.
Lorsque nous accédons fréquemment à une base de données, nous pouvons écrire l'instruction de connexion dans un fichier
con_db.php
<?php
$dbh = mysql_connect('localhost','','');
mysql_select_db('admreqs');
?>
Dans l'application réelle, nous pouvons appeler ce fichier dans le programme.
Par exemple, require("con_db.php") ou include("con_db.php)
, l'effet des deux fonctions est presque le même.
Mais si vous utilisez
filename.php
<?php
comme ceci
exiger("con_db.php")
fonction monfun($par1,$par2)
{Contient des instructions pour le traitement de la base de données}
.....
monfun($par1,$par2);
.....
mon plaisir($p1,$p2);
?>
Le fichier ne peut pas continuer à être exécuté lorsqu'il atteint myfun, car les variables externes ne peuvent pas être obtenues dans la fonction (il en est de même pour include). Sauf si $dbh est passé à la fonction en tant que variable. Cela augmente la complexité de l’appel des fonctions.
Nous pouvons résoudre ce problème en mettant require ou include dans la fonction.
Si include est utilisé, le premier appel de fonction du fichier se déroulera sans problème, mais le deuxième appel ne sera pas exécuté. La raison en est que la base de données ne peut pas être rouverte sans la fermer. En d'autres termes, con_db.php est exécuté deux fois. Remplacez include par require et tout va bien.
En d'autres termes, require est similaire à une pré-analyse. Lorsque le programme est exécuté, que ce soit à l'intérieur ou à l'extérieur de la fonction, le fichier require sera exécuté en premier et une seule fois. Et include appelle le fichier à chaque fois qu'il est exécuté, c'est-à-dire qu'après cette exécution, la prochaine fois qu'il sera exécuté à ce stade, il sera à nouveau exécuté.
Par conséquent, s'il y a certaines instructions dans une boucle que vous ne souhaitez exécuter qu'une seule fois, vous pouvez simplement les inclure avec require.