[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подключение файлов в цикле
alexperec
Проблема: нужно из цикла просто вынести большой кусок кода в отдельный файл. Делать из этого куска функцию нецелесообразно.

Пытался решить так
foreach ($var as $key => $value) {
...
include_once 'file.php';
...

}

но код из файла выполняется только в первой итерации, далее игнорируется.
innovate
Цитата
выполняется только в первой итерации

Цитата
include_once
alexperec
С include работает, но не возникнет ли нагромождения при многократном подключении? Т.е. тут вопрос в логике работы include:
1. он в место вызова возвращает код из подключаемого файла
2. или просто к нему обращается?
Zzepish
alexperec
Цитата
С include работает, но не возникнет ли нагромождения при многократном подключении?

Твоя логика крашит мой мозг
rooor
Цитата
тут вопрос в логике работы include

тут вопрос в логике использования цикла...

не знаю для чего это, но если это классы, почему бы не использовать __autoload?
alexperec
Цитата
Твоя логика крашит мой мозг

Иначе помощь бы мне не требовалась)
alexperec
Цитата
не знаю для чего это, но если это классы, почему бы не использовать __autoload?

Хочу частично вынести тело цикла отдельно, для удобства, т.к. оно огромное получается. Никаких классов нет.

Выглядит все так
foreach ($var as $key => $value) {
switch ($value) {
case '...':
include 'file1.php';
break;
case '...':
include_once 'file2.php';
break;
..........

case '...':
include_once 'file10.php';
break;
}

Каждый из файлов по 200-300+ строк. Если весь этот код не раскидать, свихнуться можно
johniek_comp
rooor
причем здесь классы? __autoload можно только с классами использовать? smile.gif

_____________
user posted image
kaww
alexperec
, include при каждом вызове обращается к файлу. Если нужно многократно подключать одиy и тот же файл, то лучше делать как-то так
$_registry = array();
foreach ($var as $key => $value) {

if (!isset($_registry[$key])) {

$_registry[$key] = file_get_contents($key);
}
eval($_registry[$key]);
}
alexperec
kaww, думал над таким вариантом, но eval() не будет ли сильно тормозить работу? Файлы то довольно большие - не по одной строке...

В оптимизации я совсем не силен, буду рад любому совету
kaww
alexperec
,провел сферический тест в вакууме на 100К итераций, вот результаты
Inlude: 3.8349 сек.
Eval: 1.7771 сек.
alexperec
Убедительно, спасибо)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.