Forum Webscript.Ru
Программирование => PHP => Тема начата: metton от 13 Февраля 2004, 19:33:41
-
[OFF]RomikChef
Шаблонные движки - это совершенно бесполезные надстройки над пхп
Поясни, плз. Ты считаешь сами шаблонные движки бесполезными по сути или бесполезным их встраивание в ПХП?
[/OFF]
-
Ну, это лично мое мнение.
ПХП сам разрабатывался, в частности, и как шаблонный движок, вообще-то.
И делать шаблоны на шаблонах я считаю занятием не самым интересным.
а =$TITLE?> считаю не принципиально отличающимся от {TITLE}
а все вычисления и подготовку данных точно так же можно вынести в отдельный скрипт.
вот еще спектатор пишет на эту тему.
http://spectator.ru/technology/php/easy_templates
-
2RomikChef
Понял. Но всё же, возвращаясь к тем же циклическим шаблонам. Их можно реализовать, как я понимаю, только циклом, который будет находится непосредственно в шаблоне, что, ИМХО, не есть хорошо и противоречит концепции отделения кода от дизайна.
-
metton
совершенно верно.
при классических шаблонах так все и обстоит. все "большие" движки, типа Смарти, пхптемплейтс - включают в себя управляющие структуры, дублирующие пхп. Получается интерпретатор, написаный на интерпретаторе.
А теперь вспомним, что шаблоны изначально придумывались... для дизайнера, чтобы ему не учить пхп... и вместо нормального языка дизайнер все равно учит псевдоязык.
при этом все равно бывают вещи, которые для того, чтобы сделать средствами интерпретатора, надо поиметь большой геморрой.
есть еще вариант, не отступать ни на шаг от канонов - для строки цикла сделать отдельный файл шаблона.
зашибись, правда?
В общем, именно из-за этой убогости, которая приносит гораздо больше вреда, чем пользы и связывает руки родновременно раздувая шаблонный движок, лично я и пользуюсь такими "шаблонами для бедных", просто разделяя пхп скрипт на две части - логика и вывод.
в выводе - простейшие операторы
-
RomikChef
В принципе можно ведь реализовать шаблонизатор и без управляющих структур, а только с некоторыми метками. Причём таких меток может быть не более 2-3 типов.
Если я не прав, предложи задачу, которая не решаема с помощью такого подхода?
Но как же быть с языками, которые не встраиваются в html (тот же perl)? Встраивать их вручную? Имхо, неэффективно.
Хотя может все эти предположения из-за недостатка опыта :rollingeyes:
-
metton:
В принципе можно ведь реализовать шаблонизатор и без управляющих структур, а только с некоторыми метками.
весьма интересное утверждение.
не затруднит тебя набросать пару примеров?
ну, скажем, цикл мы можем такой штукой сделать.
а условный переход?
-
RomikChef
у меня есть некоторые наработки на Perl, но пока не хотелось бы ими светить без надобности, так как они уже используются в некоторых проектах
давай так: ты мне задачу, которую, ты, предполагаешь, нельзя решить без вставки управляющих структур непосредственно в шаблон, а я тебе (если конечно мои наработки это позволят) решение
условный переход... поясни
зы: и тогда уж перенеси плз эту ветку в алгоритмы и стандарты, так как в последнее время я уже в большей степени представитель perl-братии, чем php, а вопрос обсудить интересно
-
if ($row[\'email\']) { ?>
} else { ?>
 |
} ?>
-
metton:
Но как же быть с языками, которые не встраиваются в html (тот же perl)?
Давай не будем делать таких далекоидущих выводов. Загляни, хотя бы, сюда: http://perl.apache.org/embperl/. А потом посмотри на Т2Т и масон. Perl уже давно уже вырос из языка обработки текстов.
Извините что в разделе для РНР...
-
NeoNox
Не совсем тебя понял. Я и не отрицаю, что Perl встраиваем в html, но я считаю что это просто ненужно. Или я опять неправ?
RomikChef
Так, ну во первых, самое простое: пишем в файле шаблоне ту часть кода, которая используется по умолчанию. Если же выполняется какое-либо условие (тот самый if; выполняется он в коде) подгружаем вместо шаблона по умолчанию другой. Только здесь для неосновных вариантов придётся "для строки цикла сделать отдельный файл шаблона", что тебе, видимо не очень-то нравится.
-
RomikChef
Ещё можно эти несколько вариантов рядом в одном файле расположить, а В КОДЕ уже вибирать какой оставлять, на основе каких либо условий.
-
да, не очень.
при пришлось как-то править один проектик сделанный таким образом.
я проклял все на свете, колупаясь в полусотне этих мелких файликов.
-
metton
ну покажи - приведи пример?
при этом, заметь, логика шаблона сильно хромает.
одно на месте, другое - во внешнем файле
как отличить один блок от другого.
в общем, ради соблюдения кошерности шаблона, ты заработаешь себе геморрой.
-
RomikChef
|
Комментарии - псевдокод, для наглядности.
При выполнении нужного условия оставляем и парсим соответствующий шаблон. Второй убираем. При некотором условии можно даже оба оставить.
-
RomikChef
А насчёт множества маленьких файликов, конечно, с тобой согласен. Но когда есть, скажем, файлов 20 (по количеству разделов +/- ещё несколько) вполне реально эффективно управлять проектом (а именно, менять дизайн) даже человеку, знающему тольк html, при наличии документации (а так как имеем всего два-три вида конструкции, документация не должна сильно напрячь; в большльшей части, документация эта - описание какие шаблоны в каких файлах).
-
ну, разве что, так.
логика реализуется в скрипте, а в шаблоне - описывается комментариями.
хотя это все равно ущербный подход. реально, ты поимел в шаблоне таки управляющую структуру, но сделал вид, что ее нет.
но я никому своего мнения не навязываю. нехай будет так.
я, в общем, в вопросе шаблонов не экстремист
-
2RomikChef
шаблоны изначально придумывались... для дизайнера
<...>
реально, ты поимел в шаблоне таки управляющую структуру, но сделал вид, что ее нет
Вот! Для дизайнера её как раз и нет, что и требовалось - минимум конструкций для простоты работы с шаблонами человеку несведущему ;)
-
metton:
Но как же быть с языками, которые не встраиваются в html (тот же perl)
metton:
Я и не отрицаю, что Perl встраиваем в html
Ты уж определись ;)
metton:
но я считаю что это просто ненужно
кому не нужно?? программисту, верстальщику или системному администратору? Речь идет о шаблонах и я дал тебе премер реализации их.
-
Рома, а как ты относишься к XSLT?
-
NeoNox:
Ты уж определись
Имелось ввиду что по умолчанию невстраиваемые.
кому не нужно?? программисту, верстальщику или системному администратору?
Дизайнеру это точно не нужно, программисту в итоге смешивание кода с дизайном выйдет боком, и поддерживать сайт будет имхо сложнее...
-
RomikChef:
if ($row[\'email\']) { ?>