template engine - динамический блок?

Name

Новичок
template engine - динамический блок?

Допустим есть движок темплейтов.
1. Вариант.
В темплайте используем заранее определенный тег для
динамического блока <tmpl:ROW></tmpl:ROW>, и при парсере шаблона
этот блок автоматически устанавливаеться динамическим.
После вызова функции tplGet(), мы сразу имеем
header, footer, и dinamic

2. Вагриант.
Нет определенного тега. Используем любое имя.
Тогда потребуеться два шага.
tplGet() -- Получаем шаблон
tplSetRow('row') -- Определяем динамический блок

Какой вариант предпочли бы вы?
 

Апокалипсис

Guest
мне второй больше нравится
 

ONK

Пассивист PHPСluba
1. Вариант годится только для генерирования чего-то очень простого, например простых таблиц, нет гибкости применения.

Я за второй -)..
 

Name

Новичок
Полежал, подумал думаю во втором вариате логики больше,
даже глядя на код как бы понятнее, хотя если темплэйте не имеет headera и footera и предназначаеться для цикла то он весь и получаеться dinamic, и функцию tplSetRow() вызывать как бы не надо.
Я к тому что возможно неправильное толкование.

Еще.
Насколько востребованы вложеные циклы.
1. Можно так, всегда так и делал, не очень часто и надо
<tmpl:ROW>
{var} // для этой переменной будет new instance of a class, здесь будет еще один цикл
</tmpl:ROW>

2.
<tmpl:ROW>
<tmpl:ROW1>
ROW1 - dinamik inside dinamic, будет обрабатываться движком
</tmpl:ROW1>
</tmpl:ROW>

При втором варианте в некоторые функции придеться передвавать по одному лишнему аргументу, а так не хочеться жизнь усложнять.
(Хотел ведь сделать как можно проще).

Вот я парю блин. Ну посоветоваться хочеться.
Что скажете.
 

ONK

Пассивист PHPСluba
2 Вариант подразумевает поддержку также динамических блоков тройной четверной и более вложенности по отношению друг к другу, а следовательно надо реализовывать рекурсивную парсировку или генерирование (в зависимости от принципов работы парсёра шаблонов). Я для себя решил что достаточно объявить в шаблоне переменную и заносить в неё результат генерирования кода из другого динамического блока. В результате приходится создавать столько объектов генерирующих код, сколько уровней вложенности есть в обрабатываемом шаблоне. Мне лично ниразу не приходилость создавать более 2 объектов для генерирования самых сложных страниц.
 

Name

Новичок
> 1. Вариант годится только для генерирования чего-то очень простого, например простых таблиц, нет гибкости применения.
А почему кстати для несложных таблиц, какая разница когда ты определишь dinamic block, в чем гибкость
 
Сверху