Что происходит при работе include() ?

  • Автор темы Автор темы dak
  • Дата начала Дата начала

dak

Guest
Что происходит при работе include() ?

Сразу скажу, что вопрос не ламерский, и говорить, что include() меняется на содержимое файла не надо...
Хочется понять, что происходит в интерпретаторе PHP, когда он обрабтывает директиву include()... Допустим включается файл, в котором содержится код, и этот код может включить тот же файл, предаварительно изменив значения каких-то переменых управляющих включениями. А что при этом происходит в реальности? Получается как бы такой вложенный в друг дружку код (как матрешки)? или я не прав? И есть ли ограничения по глубине у такой матрешки?
Если это так, то можно ли такой фишки избежать, если узнать что еще надо влючить можно только когда включен очерденой файл. Т.е. инфомация по еще файлам которые надо влкючить находиться в нем.
 
не знаю, что ты имеешь ввиду под матрешками, по простому так: пхп - это интерпретатор (с элементами компиляции :-); на встреченном инклюде текущий скрипт останавливается, а управление передается на включаемый файл.. если тот завершиться, то управление вернется.

> И есть ли ограничения по глубине у такой матрешки?

какие еще ограничения у рекурсий?? Может чисто технические. Просто есть некий лимит памяти (8 мегов), по достижению которого программа умирает.

избежать повторных включений одного и того же файла легко.

<?

if (function_exists("check_уникальное_имя")) return;

function check_уникальное_имя() {}

... далее данные ...

?>

"return" завершит процедуру include данного файла
 
2 DiMA:
"избежать повторных включений одного и того же файла легко." - но только не так как ты преблагаешь, больно это коряво :)

Способ 1. include_once() (только в PHP4);
Способ 2. if (defined()) return; define();
 
Сверху