alexperec
31.03.2013 - 00:58
Проблема: нужно из цикла просто вынести большой кусок кода в отдельный файл. Делать из этого куска функцию нецелесообразно.
Пытался решить так
foreach ($var as $key => $value) {
...
include_once 'file.php';
...
}
но код из файла выполняется только в первой итерации, далее игнорируется.
innovate
31.03.2013 - 01:23
Цитата |
выполняется только в первой итерации |
alexperec
31.03.2013 - 01:32
С include работает, но не возникнет ли нагромождения при многократном подключении? Т.е. тут вопрос в логике работы include:
1. он в место вызова возвращает код из подключаемого файла
2. или просто к нему обращается?
Zzepish
31.03.2013 - 01:35
alexperec
Цитата |
С include работает, но не возникнет ли нагромождения при многократном подключении? |
Твоя логика крашит мой мозг
Цитата |
тут вопрос в логике работы include |
тут вопрос в логике использования цикла...
не знаю для чего это, но если это классы, почему бы не использовать __autoload?
alexperec
31.03.2013 - 01:41
Цитата |
Твоя логика крашит мой мозг |
Иначе помощь бы мне не требовалась)
alexperec
31.03.2013 - 01:53
Цитата |
не знаю для чего это, но если это классы, почему бы не использовать __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
31.03.2013 - 08:37
rooorпричем здесь классы? __autoload можно только с классами использовать?
_____________
alexperec, include при каждом вызове обращается к файлу. Если нужно многократно подключать одиy и тот же файл, то лучше делать как-то так
$_registry = array();
foreach ($var as $key => $value) {
if (!isset($_registry[$key])) {
$_registry[$key] = file_get_contents($key);
}
eval($_registry[$key]);
}
alexperec
31.03.2013 - 15:25
kaww, думал над таким вариантом, но eval() не будет ли сильно тормозить работу? Файлы то довольно большие - не по одной строке...
В оптимизации я совсем не силен, буду рад любому совету
alexperec
,провел сферический тест в вакууме на 100К итераций, вот результаты
Inlude: 3.8349 сек.
Eval: 1.7771 сек.
alexperec
31.03.2013 - 18:44
Убедительно, спасибо)
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.