{Smarty} плагин для работы с итератором

csa

Guest
можно выковырять реализацию foreach и сделать какой-нибудь плагин {foreachdo from=<DB_Resault-based-iterator> method=<fetchrow-method> item=<item>}
плагина такого не нашел (с функциональностью foreach), а из самого смарти чего-то заломало копать..
модет кто-то уже делал что-то подобное? или где видел?
 

Demiurg

Guest
csa
ага ... запросы к бд в шаблонах.
Потом перевезти всю бизнес-логику в шаблоны и все будет вообще замечательно, от php останется только то, что смарти на нем оеализован.
 

csa

Guest
кто говорил про запросы?
в шаблон ты передаешь только итератор, в качестве примера API которого можно рассмотреть DB_Resault (ибо наверное лучше всего известен)
 

Demiurg

Guest
Я говорю про бизнес-логику. Не надо ради призрочного прироста производительность делать такие извращения.
 

csa

Guest
пример кода в первом посте идет вразрез с твоими представлениями о бизнес-логике?
это не призрачный прирост, а выкидывание ненужного абсолютно копирования
 

Demiurg

Guest
>пример кода в первом посте идет вразрез с твоими представлениями о бизнес-логике?
нет. с чего он должен идти ?

>это не призрачный прирост, а выкидывание ненужного абсолютно копирования
Хорошо, ты викинул то самое копирование, сделав более сильную связь шаблона с php, прибавив шанс наделать баги и усложнил процесс отладки. А теперь вопрос: какой прирост производительности ты получил ? в цифрах пожалуйста.
 

csa

Guest
>>пример кода в первом посте идет вразрез с твоими представлениями о бизнес-логике?
>нет. с чего он должен идти ?
тогда к чему называть это извращением?


>это не призрачный прирост, а выкидывание ненужного абсолютно копирования
>Хорошо, ты викинул то самое копирование, сделав более сильную связь шаблона с php, прибавив шанс наделать баги и усложнил процесс отладки. А теперь вопрос: какой прирост производительности ты получил ? в цифрах пожалуйста.
где более сильная связь с php? еще одно соглашение? ничем не хуже привязки к имени переменной с массивом
где усложнение процесса отладки? нельзя сделать дамп каждой строки при выборке из базы? сделай враппер для итератора

в цифрах - пожалуйста. несколько грубо, но все же

while($arr = mysql_fetch_array($res)) {
$data[] = $arr;
}

$start = getmicrotime();
foreach($data as $v) {
$_test[] = $v;
}
echo getmicrotime() - $start;

в общем, и не в производительности дело.. просто не нужен лишний цикл
 

Demiurg

Guest
>где более сильная связь с php? еще одно соглашение? ничем
>не хуже привязки к имени переменной с массивом
>где усложнение процесса отладки? нельзя сделать дамп
>каждой строки при выборке из базы? сделай враппер для итератора

Более сильная в том, что еще должен быть этот самый итератор, о котором должны знать и php и смарти. Кроме того, Нужен тот самый врапер, который будет не просто врапер. Кроме того, средства отладки смарти придется учить работать с этим итератором и прочее, прочее.

В смарти есть такая вещь, как кеширование, которая исключает оба цикла. и все уже встроено и отлажено.

>несколько грубо, но все же
это что ??? мы вроде про смарти говорили.

>в общем, и не в производительности дело.. просто не нужен лишний цикл
тебе этот цикл глаза мазолит ?
 

csa

Guest
мозолит, я хочу чтобы это было более прозрачно

>>несколько грубо, но все же
>это что ??? мы вроде про смарти говорили.
грубая оценка копирования массива. не катит? ладно, забей на производительность, по большому счету оверхед не особо большой
 

Demiurg

Guest
А враперы значит прозрачно да ? да еще и использование недокументированых плагинов - это тоже прозрачно да ? Опять же усложнение отладки тоже прозрачно да ?
Давайте устроим крестовый поход против лишних циклов, ненужных переменных и прочей нечести.
 

csa

Guest
враппер один, когда не нужна отладка, ты его отключаешь
каких недокументированных плагинов? мне что, плагин написать нельзя? я делаю проект, могу делать все что вздумается в пределах описанных в нем спецификаций

отладка в смарти лично мне по боку, не было необходимости ей пользоваться.

ну не хочу я лишних циклов! хочу такой плагин! у тебя его нет? отлично, будем искать (или писать)
 

Demiurg

Guest
csa
ты так и не сказал, зачем тебе это. Как заменить 2 цикла на 0(ноль целых, ноль сотых) я уже сказал.
 

csa

Guest
Автор оригинала: Demiurg
csa
ты так и не сказал, зачем тебе это.
я хочу чтобы это было более прозрачно.
я не хочу писать лишний код. плюс к итератору я могу прицепить фильтр и не один. мне это нужно. предлагаешь писать еще один цикл на каждый? (фильтры применяются в разных местах по пути следования к смарти)
Как заменить 2 цикла на 0(ноль целых, ноль сотых) я уже сказал.
где??
 

Demiurg

Guest
>я не хочу писать лишний код. плюс к итератору я могу прицепить фильтр и не один.
ты про какие фильтры ?

>где??
читай внимательно
 

csa

Guest
>>я не хочу писать лишний код. плюс к итератору я могу прицепить фильтр и не один.
>ты про какие фильтры ?
например дописать к обязательным атрибутам товаров из базы атрибуты, которые лежат в xml (дополнительные, для разных групп товаров разные)

>>где??
>читай внимательно
убей, не вижу! совет про смешение html и php?
 

lucas

Guest
например дописать к обязательным атрибутам товаров из базы атрибуты, которые лежат в xml (дополнительные, для разных групп товаров разные)
Реализовывать бизнес-логику на шаблонном языке?
 

Demiurg

Guest
>где ты увидел бизнес-логику?
бизнес-логика - это например откуда брать эти самы дополнительные атрибуты. Захотел ты эти атрибуты положить в базу, приходится переписывать шаблон.

>убей, не вижу! совет про смешение html и php?
"В смарти есть такая вещь, как кеширование, которая исключает оба цикла. и все уже встроено и отлажено."
 

csa

Guest
>>где ты увидел бизнес-логику?
>бизнес-логика - это например откуда брать эти самы дополнительные атрибуты. Захотел ты эти атрибуты положить в базу, приходится переписывать шаблон.
ты не понял, это не фильтры смарти, а мои, программные, с шаблоном никак не связанные.
инфу они берут из xml-файлов и дописывают энное количество полей к массиву с данными товара из базы

>>убей, не вижу! совет про смешение html и php?
>"В смарти есть такая вещь, как кеширование, которая исключает оба цикла. и все уже встроено и отлажено."
а, понял, при взятие кеша циклов не будет :)
 

Demiurg

Guest
тогда я не понимаю, как ты избавляешься от циклам по фильтрам, циклофоб.
 
Сверху