пригласи его в форум, пусть он обоснует свой велосипед.Во первых, решения у нас принимает начальник, а не я. Передо мной просто ставятся задачи.
везет же вам... есть кому готовить кофеВо вторых, верстальщик у нас девушка... Ну думаю тут обсуждать не будем ничего.
убеди начальника, что логику желательно "впихивать" в представление.В третьих, я бы с превеликим удовольствием выпихнул циклы, условия, строковые функции в шаблон, чтобы с ними парился верстальщик(мне же меньше геммороя), но по выше обозначенным причинам - не могу
ха ха3-ем (5-ти,10-ти...)
1. (ПУНКТ 1) Объясняю на примере.п4 - не обоснованное и не понятное требование. Мне кажется это требование покрывают тоже большинство шаблонизаторов, или я что-то недопонимаю
Парсить все равно надо. Просто парсинг становится проще, а структура шаблона понятнее. Логике не обязательно быть в виде чистого PHP, ее могут нести псевдотеги типа <IF>...</IF> - думаю, верстальщику, даже девушке, это может быть куда понятнее, чем нагромождение с виду почти одинаковых динам. блоков. А производительности по существу без разницы, где эта логика обрабатывается.Выносить логику в шаблон это, в целом, достаточно хорошее решение, т.к. достигается максимальная производительность потому что парсить шаблон уже не надо.
А вот в случае компилирующих шаблонизаторов, действительно, парсить шаблон больше не надо, и производительность действительно лучшезачем в таком случае ... вообще компилируемые шаблонизаторы ?
Имхо, скорее минус, чем плюс (см. п. 4). К тому же, поскольку структура рекурсивная, "кусочки" в памяти почти наверняка будут дублироваться.вся структура шаблона(вместе с данными) хранится в памяти по кусочкам
Аналогично, не вижу оснований гордиться этим как большим достижением. Не верю в настолько значительное преимущество рекурсивной функции на базе substr+strpos+str_replace перед грамотно составленным preg_replace в скорости, чтобы отказываться от лаконичности и гибкости второго. Откуда вообще такая неприязнь к регам? Может, Вы просто не умеете их готовить?я пока ещё не использовал НИ ОДНОГО регулярного выражения
Да, именно об этом я и толкую с самого начала.Автор оригинала: SelenIT
DexizeR
По-моему,
1) Сама необходимость введения динамических блоков в стиле фастТимлпейта вытекает из стремления полностью очистить шаблон от управляющих структур, отдав всякую интерпретацию этих блоков на откуп скрипту.
Согласен, но в FastTemplate(по крайне мере в 1.2 версии) можно размещать сколько угодно блоков в одну строку.А уж реализация этих блоков в фастТимплейте - сама по себе ужас: одна невозможность разместить несколько блоков в одну строку делают этот подход непригодным во многих дизайнах.
Запутанности в скрипте это не даёт ни коим образом. По крайне мере я не представляю себе такую практическую организацию блоков, чтобы было неясно зачем они нужны.2) Замена переменных на значения - самая базовая вещь в любом шаблонизаторе, прекрасно реализованная на уровне самого PHP, причем несколькими способами.
3) Кажущееся отстутствие условий и циклов в шаблонах а-ля фастТимплейт на деле приводит к запутанности в соотвтетсвующем скрипте - поди с ходу разбери, какой динам. блок парсить, а какой очищать в каждой конкретной ситуации.
См. пост выше с примером постраничного вывода.4) Требование независимой конкатенации любой части шаблона с любой частью, на мой взгляд, перечеркивает сам смысл шаблонизации: ведь в итоге реализации этого требования "шаблон" опять распадается на кучу несвязанных переменных, логика и порядок вывода которых определяются в скрипте и в итоге зависят в основном от программиста, чем от верстальщика. Шаблон - на то и шаблон, что из него должно быть четко и ясно видно, что во что вложено и что за чем следует.
Ошибаешься, если верстальщик знает только HTML, то в сякие циклы и условия на совершенно непонятно языке станут гораздее менее удобным для него, чем динамические блоки обозначенные вообще в виде HTML коментария.5)
Парсить все равно надо. Просто парсинг становится проще, а структура шаблона понятнее. Логике не обязательно быть в виде чистого PHP, ее могут нести псевдотеги типа <IF>...</IF> - думаю, верстальщику, даже девушке, это может быть куда понятнее, чем нагромождение с виду почти одинаковых динам. блоков. А производительности по существу без разницы, где эта логика обрабатывается.
А вот в случае компилирующих шаблонизаторов, действительно, парсить шаблон больше не надо, и производительность действительно лучше![]()
С чего это кусочкам дублориваться ? никакого дублирования не происходит. И на самом деле это плюс, а не минус, т.к. уже не надо знать где динамические блоки. Ещё раз повторяю, структура данных в памяти полностью повторяет сам шаблон, а блоки записаны отдельно по ссылкам - соответсвенно к ним можно напрямую обращаться без всяких регулярных выражений и делать что угодно, хоть очищать, хоть дописывать и т.п.6) Имхо, скорее минус, чем плюс (см. п. 4). К тому же, поскольку структура рекурсивная, "кусочки" в памяти почти наверняка будут дублироваться.
А вот и ошибаешься, снова. Дело в том, что реги могут выйграть только на первом этапе обработки шаблона(его разбора)... А знаешь почему ? потому что регам этого делать просто не надо. Но с другой стороны, представим себе задачу - есть шаблон с двумя уровнями вложенности блоков, напиши такой код, чтобы пропарсить второй вложенный блок. И ведь прибегать к регам надо будет на каждом этапе обработки шаблона... Вот поэтому они и медленнее.7) Аналогично, не вижу оснований гордиться этим как большим достижением. Не верю в настолько значительное преимущество рекурсивной функции на базе substr+strpos+str_replace перед грамотно составленным preg_replace в скорости, чтобы отказываться от лаконичности и гибкости второго. Откуда вообще такая неприязнь к регам? Может, Вы просто не умеете их готовить?![]()
Ты не много опоздал... Тут как раз уже решили, что Smarty как функциональная часть проекта совершенно бесполезен ибо все это же можно с таким же успехом написать самим кодом PHP в шаблоне... Единственное его преумщество - девочке верстальщике будет проще понять <IF> </IF>, чем <?if(){?> <?}?> - вот и всё.Автор оригинала: __Lex
Глупо спорить, каждый будет отстаивать правильность своего выбора.
Мой выбор smarty, а я уже много делал разных "шаблонизаторов". Он простой и удобный (и не надо спорить, вы хоть один проект с ним грамотно напишите, тогда и сравнивайте). Мой выбор обусловлен:
- Простотой
- Гибкостью
- Он умеет кэшировать
- Это всё же групповой проект, поэтому лишён аппендиксов
- Хорошо докумментирован
первые два пункта противоречат друг другу.Простотой
Гибкостью
Он умеет кэшировать
Это всё же групповой проект, поэтому лишён аппендиксов
Хорошо докумментирован
прости, мальчик, но этот твой довод несёт чисто эмоциональную окраску, и никакой информационной.Можешь продолжать писать <?if(){?> <?}?> упиваясь своей по-детски наивной крутизной,
А я бы в ответ написал так:не соглашусь. не вижу в этом ничего хорошего. кусками строить шаблоны - это геморой.
+ незнакомый и сложный и НАВЕРНЕКА не гибкий синтаксис.
<tr>
<td nowrap>Дата</td>
<td>
<?php echo html_select_date('date',$article['dt'], '-5', '+1', 'DMY', '%m')?> - <?php echo html_select_time('date',$article['dt'],false)?>
</td>
</tr>