проблемы шаблонизаторов

Earthling

Guest
проблемы шаблонизаторов

На текущий момент создана куча шаблонизаторов. Но люди продолжать сочинять новые, 'для себя'. Почему ?

Какие задачи вызывают проблемы с уже имеющимися шаблонизаторами ?

Наверняка каждый, работавший с шаблонами, встречал неудобные конструкции/требования.

Поделитесь ?
 

Vinny

Guest
Мне не нужны те навороты которые предлагают готовые шаблонизаторы... Я сделал для себя класс с необходимым минимумом и использую его...
 

tony2001

TeaM PHPClub
почему люди не ходят строем?
почему у всех разные имена?
почему все по-разному дышат и думают?
еще можно массу риторических вопросов придумать, но толку от этого - 0. зеро.
 

Earthling

Guest
Originally posted by Vinny
Мне не нужны те навороты которые предлагают готовые шаблонизаторы... Я сделал для себя класс с необходимым минимумом и использую его...
Ага.. А что такое необходимый минимум ?


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

tony2001

TeaM PHPClub
вопрос риторический, пока он касается "квадратных коней в вакууме", с которыми планируется использовать вышеупомянутые шаблонизаторы.
кроме того, некоторые шаблонизаторы (например, [usrl=http://smarty.php.net]Smarty[/url]) возволяют тебе самому выбрать те "навороты", которые тебе нужны, а остальные просто выбросить.
 

Earthling

Guest
Originally posted by tony2001
вопрос риторический, пока он касается "квадратных коней в вакууме", с которыми планируется использовать вышеупомянутые шаблонизаторы.
кроме того, некоторые шаблонизаторы (например, [usrl=http://smarty.php.net]Smarty[/url]) возволяют тебе самому выбрать те "навороты", которые тебе нужны, а остальные просто выбросить.
Имеется в виду веб-программирование, создание сайтов и CMS. Там использовать шаблонизатор.

Если количество наворотов позволяет все задачи выполнять легко и изящно - это здорово. Но я сомневаюсь. При этом в первую интересуют шаблонизаторы, при использовании которых шаблон остается HTML-страничкой с разметкой, а не превращается (смарти) в подобие псевдокода.
 

Earthling

Guest
Поддержка многоязыковости вряд ли относится к требованиям для шаблонизатора.

Однако, возможность удобной реализации многоязыковости с его помощью - безусловно, входит в требования.

В шаблонах не должно быть условий if.. Они относятся к логике, а не к разметке текста.
Шаблонизатор - средство для отделения логики от кода. В этом смысле моя точка зрения отличается от точки зрения создателей Смарти.
Для логики представления существует PHP.


XML-технологии на практике сверхтяжеловесны по количеству кода, медленны и неудобны с точки зрения отладки.
 

Crazy

Developer
Автор оригинала: Earthling
В шаблонах не должно быть условий if.. Они относятся к логике, а не к разметке текста.
Не надо путать бизнес-логику и логику форматирования текста.
 

Earthling

Guest
Originally posted by Crazy
Не надо путать бизнес-логику и логику форматирования текста.
Под логикой я подразумеваю бизнес-логику + логику представления (АКА презентационная логика).

Мне кажется, ей должен заниматься не шаблон-программа(Smarty), а программист.

Причины для этого следующие:

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

2. Так или иначе, нереально полностью разделить презентационную и бизнес-логику. Примером является, например, существование в Smarty фильтров, которые вырезают/заменяют заданные куски(например, комментарии) текста перед показом шаблона. Это, безусловно, презентационная логика, но... Реализуемая исключительно программистом внутри скриптов.

3. Придумывать новый язык для презентационной логики, вообще говоря, не обязательно.. Он уже есть: PHP.

3. Верстальщик или любой другой человек, имеющий дело с шаблонами, не должен влиять на работу скриптов или иметь доступ к их данным. В частности, к паролям, зачастую хранящимся в глобальных переменных. Это в первую очередь относится к включению PHP-кода в шаблон.
 

tony2001

TeaM PHPClub
Earthling
вот поэтому тебе и было сказано не путать бизнес-логику и логику представления.
 

Earthling

Guest
Что ж, давайте определимся с терминами...

Презентационная логика - это логика того, как данные будут отображены на экране: в одну колонку или в три, будут ли они обрезаны до 40 символов или преобразованы по фильтру htmlspecialchars..
И т.п, вплоть до того, будут ли они показаны вообще.

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

Есть комментарии или уточнения ?
 

Crazy

Developer
Автор оригинала: Earthling
Мне кажется, ей должен заниматься не шаблон-программа(Smarty), а программист.
Простой вопрос: кто будет писть HTML-код?

Верстальщик? Не выйдет, у него отобрали логику представления. Кроме статики он самолично ничего не наверстает. Выходит, HTML-код будет писать программист? Или сажать его вместе с верстальщиком за один комп? :)
 

Earthling

Guest
Originally posted by Crazy
Простой вопрос: кто будет писть HTML-код?

Верстальщик? Не выйдет, у него отобрали логику представления. Кроме статики он самолично ничего не наверстает. Выходит, HTML-код будет писать программист? Или сажать его вместе с верстальщиком за один комп? :)
Как правило, верстальщик пишет HTML, в который программист добавляет разметку шаблона.

Программист пишет и логику представления. На то она и логика, чтоб ее программист писал.

Все это происходит (думаю, не у меня одного) без каких-либо подводных камней.

Другой вариант - программист делает минималистический дизайн вместе с базовым шаблоном.
А потом верстальщик/дизайнер его украшают, как хотят.
Таким образом удобно писать, например, админку.
 

tony2001

TeaM PHPClub
>Программист пишет и логику представления.
>На то она и логика, чтоб ее программист писал.
я не совсем понял: в одном посте ты хочешь, чтобы бизнес-логика(БЛ) и логика представления(ЛП) были отдельно, а в другом ты уже не хочешь.
не решил еще?

объясни мне вот что: в чем смысл шаблонов, если БЛ и ЛП по-твоему нераздельны?
я просто не вижу применения шаблонам в этом случае.

и чем, простите, будет заниматься верстальщик, если ЛП "у него уже отобрали" (с) Crazy ?
 

Crazy

Developer
Автор оригинала: Earthling
Как правило, верстальщик пишет HTML, в который программист добавляет разметку шаблона.
Т.е. чтобы внести правки в HTML-код шаблона верстальщик каждый раз идет к программисту? Это был вопрос номер раз.

Вопрос номер два: с чем работает верстальщик? Со статическим HTML, который он потом отдает программисту (процесс в одну сторону) -- или же в его руки попадает "код с загадочными закорючками", который породил программист на предыдущей итерации?

Другой вариант - программист делает минималистический дизайн
О господи...
 

Earthling

Guest
> Программист пишет и логику представления.
>На то она и логика, чтоб ее программист писал.
я не совсем понял: в одном посте ты хочешь, чтобы бизнес-логика(БЛ) и логика представления(ЛП) были отдельно, а в другом ты уже не хочешь.
Вообще говоря, я не писал о том, чтобы отделять логику представления от бизнес-логики. Укажи, пожалуста, конкретные посты, в которых ты нашел такую идею, и я их прокомментирую.

Если об этом зашел разговор - возможны 2 варианта:
1. Получил данные - тут же их вывел в шаблон. Никакого разделения нет, все просто и понятно.
2. В одном PHP-скрипте получил данные, в другом - их вывел. Здесь презентационная логика выступает отдельным уровнем для приложения. Она не объединена с кодом.

объясни мне вот что: в чем смысл шаблонов, если БЛ и ЛП по-твоему нераздельны?
я просто не вижу применения шаблонам в этом случае.
Смысл шаблонов - в том, чтобы верстальщик редактировал шаблон без пинания программиста. И, разумеется, без вреда для скриптовой части кода.
А программист может смело делать, например, апдейты .php-файлов без опасения навредить верстальщику, который в данный момент, возможно, переделывает шаблон.

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

Здесь я сделаю оговорку. В шаблоне могут наличествовать (не считайте это дорогой к Смарти!) дизайнерские фильтры (uppercase, но НЕ htmlspecialchars)... Да, да, я допускаю такое в шаблоне ;)..
Просто потому, что когда мне в асю стучится верстальщик и спрашивает, как название раздела в нужном месте сменить на большие буквы... Хочется сказать ему: поставь uppercase и отвянь ;)

и чем, простите, будет заниматься верстальщик, если ЛП "у него уже отобрали" (с) Crazy ?
Верстальщик берет картинку, которую сваял дизайнер, и превращает ее в хороший HTML-код. Также желательны комментарии: где что (блок новостей, основное тело страницы...).

-~{}~ 25.02.04 19:56:

Originally posted by Crazy
Т.е. чтобы внести правки в HTML-код шаблона верстальщик каждый раз идет к программисту? Это был вопрос номер раз.
Да нет же.. Зачем ? ;)) Это HTML..

Вопрос номер два: с чем работает верстальщик? Со статическим HTML, который он потом отдает программисту (процесс в одну сторону)
Разумеется, со статическим HTML + несколько типов закорючек (разметка блоков, переменных).

Пример ты можешь увидеть, например, в php_templates.
 

Crazy

Developer
Автор оригинала: Earthling
Вообще говоря, я не писал о том, чтобы отделять логику представления от бизнес-логики. Укажи, пожалуста, конкретные посты, в которых ты нашел такую идею, и я их прокомментирую.
Иначе говоря, ты НЕ хочешь разделять бизнес-логику и логику представления?

1. Получил данные - тут же их вывел в шаблон. Никакого разделения нет, все просто и понятно.
Кто в этом случае отвечает за форматирование данных? Кто решает, выводить список через <ul> или через <table>? Программист?

2. В одном PHP-скрипте получил данные, в другом - их вывел. Здесь презентационная логика выступает отдельным уровнем для приложения. Она не объединена с кодом.
На счет "не объединена с кодом" подробнее, please. Зачем тебе два PHP-файла, если во втором нет кода?

Смысл шаблонов - в том, чтобы верстальщик редактировал шаблон без пинания программиста. И, разумеется, без вреда для скриптовой части кода.
Т.е. и бизнес-логика и логика представления -- это одна большая куча под названием "скриптовая часть кода" и занимается ею программист?

Даже без продвинутой презентационной логики, поправить недостатки дизайна вполне можно.
Иногда.

Здесь я сделаю оговорку. В шаблоне могут наличествовать (не считайте это дорогой к Смарти!) дизайнерские фильтры (uppercase, но НЕ htmlspecialchars)...
Нельзя ли дать критерий отделения мух от котлет? Какой функционал фильтров ты считаешь допустимым, а какой -- нет?

Уже обсуждавшийся в другом треде пример: сформировано значение X. Это значение верстальщик может вывести как HTML, вставить как часть URL или как константу Javascript. Как программист догадается о требуемом типе квотинга?

Просто потому, что когда мне в асю стучится верстальщик и спрашивает, как название раздела в нужном месте сменить на большие буквы... Хочется сказать ему: поставь uppercase и отвянь ;)
Так как там с квотингом -- пусть стучится?

Верстальщик берет картинку, которую сваял дизайнер, и превращает ее в хороший HTML-код. Также желательны комментарии: где что (блок новостей, основное тело страницы...).
И будет расписывать, где и насколько увеличивать rowspan при добавлении новостей?

Да нет же.. Зачем ? ;)) Это HTML..
Ниже ты утверждаешь обратное:

Разумеется, со статическим HTML + несколько типов закорючек (разметка блоков, переменных).
Т.е. чтобы править шаблон верстальщик должен помимо HTML знать смысл этих закорючек, не так ли?

Пример ты можешь увидеть, например, в php_templates.
Спасибо, я уже много чего много где смог увидеть. :)
 
Сверху