Итак.
Предлагаю немного структурировать все подходы к шаблонам.
Следует разделять шаблоны с управляющими структурами и без таковых:
1. Шаблоны с управляющими структурами.
1.1. Компилируемые шаблоны. Для их описания используется некий суб язык. Пример - Smarty.
1.2. Шаблоны с PHP кодом. Тут, думаю, пояснять нечего.
2. Шаблоны без управляющих структур.
2.1. Шаблоны имеющие в своём арсенале два типа данных - динамические блоки и переменные. Пример - FastTemplate.
Теперь проясним ситуацию относительно функциональности, удобства и производительности, точнее говоря их недостатки и преимущества перед друг другом:
Преимущества п.1.2.(шаблоны с PHP кодом):
- Максимально возможный функционал доступный в шаблоне.
- Вся логика представления данных как на ладони.
- Потенциально самый производительный метод.
Недостатки:
- Разделение логики представления и бизнес логики ложится на честное слово программиста/верстальщика.
- Если шаблон составляет верстальщик от и до, то он должен владеть, как минимум, основами языка PHP. В противном случае шаблон выдается верстальщиком в виде п.2.1. а программист его преобразует в вид п.1.2.
- Редактировать шаблон сможет человек знающий PHP(ну или просто достаточно умный человек, способный разобраться что к чему в незнакомой среде).
Преимущества п.1.1.:
- В некоторой степени более легко доступный верстальщику язык управления выводом в шаблоне, чем PHP.
- Потенциальная производительность выше чем в п.2.1., но ниже чем в п.1.2.
- Доступный функционал выше чем в п.2.1., но ниже чем в п.1.2.
- В шаблоне, в расчете на корректное применение, используется исключительно логика представления данных, взаимодействие происходит только с самим скриптом, формирование данных, в котором, остается скрытым(в отличие от п.1.2.).
Недостатки:
- Если шаблон составляет верстальщик от и до, то он должен владеть этим языком(т.е. быть специально обученым).
- Редактировать шаблон сможет человек знающий этот суб язык(ну или просто достаточно умный человек, способный разобраться что к чему в незнакомой среде).
- Этот язык не является стандартом и может с легкостью отличаться от одной реализации к другой.
Преимущества п.2.1.:
- Любая логика в шаблоне отсутствует, что не требует никаких специальных знаний со стороны верстальщика(или любого другого человека).
- Максимально доступный синтаксис для верстальщика, т.е. шаблон(как здесь уже обсуждалось) выступает в роли конфигурационного файла содержего исключительно элементы HTML, что позволяет очень жестко отделить внешнюю оболочку от логики.
Недостатки:
- Потенциально самая низкая производительность.
- Отсутствие любого функционала в шаблоне.
Как можно видеть каждый вариант имеет право на жизнь:
п.1.2. могут использовать те кому важна максимальная производительность, функционал и прозрачная логика представления данных в шаблоне, при этом они готовы пожертвовать удобством верстальщика.
п.1.1. предпочтительно использовать когда верстальщик знаком с применяемой реализацией суб языка, чтобы возложить на него всю ответственность за логику представления данных(самый оптимальный вариант для программистов).
п.2.1. используется в расчете на максимальное удобство людей работающих с шаблонами и самое жесткое отделение любой логики от обертки(HTML в нашем случае).
Лично мы выбираем п.2.1. по причинам описанным выше и не выбираем другие пункты т.к. их недостатки для нас перевешивают их преимущества.
-~{}~ 19.02.06 18:40:
2 Фанат, слишком долго писал свой пост - не заметил твой ответ ,)