В PHP функции include и require легко спутать. Ниже я буду использовать классический пример, чтобы глубоко проиллюстрировать их различия.
Когда мы часто обращаемся к базе данных, мы можем записать оператор подключения в файл
con_db.php
<?php
$dbh = mysql_connect('localhost','','');
mysql_select_db('admreqs');
?>
В реальном приложении мы можем вызвать этот файл в программе.
Например, require("con_db.php") или include("con_db.php)
эффект от этих двух функций почти одинаковый.
Но если вы используете
filename.php
<?php
вот так
требуется("con_db.php")
функция myfun($par1,$par2)
{Содержит инструкции для обработки базы данных}
.....
myfun($par1,$par2);
.....
myfun($p1,$p2);
?>
Файл не может продолжать выполняться, когда он достигает myfun, потому что внешние переменные не могут быть получены в функции (то же самое справедливо и для включения). Если только $dbh не передается функции как переменная. Это увеличивает сложность вызова функций.
Мы можем решить эту проблему, поместив require или include внутри функции.
Если используется include, первый вызов функции файла пройдет гладко, но второй вызов не будет выполнен. Причина в том, что базу данных нельзя открыть снова, не закрыв ее. Другими словами, con_db.php выполняется дважды. Замените include на require и все будет в порядке.
Другими словами, require аналогичен предварительному сканированию. Когда программа выполняется внутри или вне функции, требуемый файл будет выполнен первым и только один раз. И include вызывает файл при каждом его выполнении. То есть после этого выполнения, в следующий раз, когда он будет выполнен до этой точки, он будет выполнен снова.
Поэтому, если в цикле есть определенные инструкции, которые вы хотите выполнить только один раз, вы можете просто включить их с помощью require.