САМОУЧИТЕЛЬ PHP 4



         

Конструкции языка - часть 12


Инструкция include

Эта инструкция практически идентична require, за исключением того, что вклю­чаемый файл вставляется "в сердце"

нашего сценария не перед его выпол­нением, а прямо во время.

Какая разница? Поясню. Пусть у нас есть 10 текстовых файлов с именами file0.php, file1.php и так далее до file9.php, содержимое которых просто десятичные цифры 0, 1 ...… 9 (по одной цифре в каждом файле). Запустим такую програм­му:

for($i=0; $i<10; $i++) {

  include "file$i.php";

}

В результате мы получим вывод[E3] , состоящий из 10 цифр: "0123456789". Из этого мы можем заключить, что каждый из наших файлов был включен по одному разу прямо во время выполнения цикла! (Попробуй­те теперь вместо include подставить require. Сравните результат.)

Вы, должно быть, обратили внимание на, казалось бы, лишние фигур­ные скобки вокруг include. Попробуйте их убрать.

Вы тут же можете по­лучить совершенно бестолковое сообщение об ошибке (или, еще хуже, ­программа начнет неправильно работать, а причину разыскать будет нелегко). Почему так происходит? Да потому, что include не является на самом деле оператором в привычном нам смысле этого слова. Чтобы это понять, представьте, что каждый раз, когда интерпретатор встречает инструкцию include, он просто "в лоб"

заменяет ее на содержимое файла, указанного в параметре.

А вдруг в этом файле несколько команд? Тогда в цикле выполнится только первая из них, а остальные будут запущены уже после

окончания цикла. Так что общее правило гласит: всегда обрамляйте инструкцию include фигурными скобками, если размещаете ее внутри какой-либо конструкции.

В будущих версиях разработчики PHP, возможно, и исправят положение к лучшему, однако не советую вам рассчитывать на это.

Трансляция и проблемы с include

Как мы знаем, перед исполнением PHP транслирует программу во внутреннее представление. Это означает, что в памяти создается как бы "полу­фабрикат", из которого исключены все комментарии, лишние пробелы, некоторые имена переменных и т. д. Впоследствии это внутреннее представление интерпретируется (выполняется). Однако мы знаем также, что в программе могут встретиться такие места, "подводные камни"




Содержание  Назад  Вперед