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

dak

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

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

DiMA

php.spb.ru
Команда форума
не знаю, что ты имеешь ввиду под матрешками, по простому так: пхп - это интерпретатор (с элементами компиляции :); на встреченном инклюде текущий скрипт останавливается, а управление передается на включаемый файл.. если тот завершиться, то управление вернется.

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

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

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

<?

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

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

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

?>

"return" завершит процедуру include данного файла
 

si

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

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