Существуют два основных отличия
Posted in: Многофайловые сценарии PHP, By: admin, At: Сентябрь 15th, 2008
Если оба оператора позволяют текущему сценарию выполнять код из отдельного файла, в чем же разница между ними? Существуют два основных отличия: первое — это способность возвращать значения и второе — при каких условиях загружается запрошенный файл. Когда применяется директива include, РНР откладывает момент-загрузки запрошенного файла до того момента, когда сценарий достигнет точки выполнения оператора include и заменит его содержимым этого файла. В противоположность этому в случае применения оператора require, он заменяется содержимым включаемого файла независимо от того, будет ли выполнен оператор required (и, соответственно, содержимое файла) в процессе нормального выполнения сценария.
Все это прекрасно, но что именно означает “возврат значения” из внешнего файла?
Рассмотрим код, приведенный в листинге 1.26, который, как предполагается, сохранен в файле test, inc, и связанный с ним сценарий includetest ,php.
Листинг 1.26. Поведение файлов, включенных с помощью include
/* test.inc file */
echo “Внутри включаемого файла<ВН>“;
return “Возвращенная строка”;
echo “После возврата внутри включения<ВК>“;
/* файл includetest.php */
echo “Внутри includetest.php
“;
$ret = include (’test.inc1);
echo “Выполнено включение test.inc
“;
echo “Возвращенное значение равно ‘$ret’”;
Когда includetest .php выполнится, каков будет результат? В данном случае он будет таким:
Внутри includetest.php Внутри included file Выполнено включение test.inc
Возвращенное значение равно ‘Возвращенная строка’
Как вы можете убедиться, внешние файлы не только применимы для сохранения библиотек функций общего пользования РНР. Когда используется оператор include, они могут быть функциями РНР в полном смысле этого слова. Обратите внимание, что когда в файле includetest,php встречается оператор return, выполнение оставшейся части файла прерывается.
НА ЗАМЕТКУ -:-
Способность возвращать значения из внешних файлов ограничена только операторами
include и include_once. Операторы requite и require_once не позволяют это делать.
Leave a Reply