За последние 24 часа нас посетили 17583 программиста и 1677 роботов. Сейчас ищут 1929 программистов ...

О компилируемых шаблонах и объёмах допустимой в них логики

Тема в разделе "Прочие вопросы по PHP", создана пользователем TiGR, 3 сен 2006.

  1. TiGR

    TiGR Активный пользователь

    С нами с:
    3 сен 2006
    Сообщения:
    39
    Симпатии:
    0
    Адрес:
    Ижевск
    Не сочтите за рекламу... :)

    Вопрос такой. Я написал свою CMF (она разрабатывалась достаточно долго, неспеша, в данный момент это почти полноценная RC), многократно пытался найти готовое решение, но всё время что-то было не так.

    В последнее время наиболее симпатичен Zend Framework, но у него один большой минус - сыроват, и многих нужных вещей ещё нет (хотя другие многие нужные вещи уже есть :) ).

    Ну и к теме. В своей системе я использую компилируемые шаблоны, с синтаксисом очень близким к смарти, только маленький и шустренький (5к движок + 20к компилятор, подгружаемый только по необходимости). Имеется встроенная логика (блоки if, foreach, foreachelse), плагины (блоки: cache, capture, htmlize; команды: counter, cycle, include [вложение других шаблонов], set [assign]) и плагины компилятора (блоки; обработка переменных: addslashes, date, format, htmlize, replace, tolower, toupper, truncate).

    На днях добавил плагин fetch - он позволяет вызвать специальный объект и запросить данные (через обычный вызов метода). Ну, например:
    Код (Text):
    1. {fetch polls}
    2.  
    3. // дальше рисуем формочку опроса, или выводим его результат -
    4. // в зависимости от значения $polls, который является многомерным
    5. // массивом, и в частности, содержит информацию об опциях
    6. // и результатах
    Удобно в том плане, что обрабатывают запросы разные файлы (разные классы, ala controllers в ZendFramework), и неохота каждый раз при обращении к шаблонам выдёргивать значение из БД, и передавать шаблон. В данной ситуации шаблон самодостаточен.

    Понимаю, что местами архитектура хромает, но не это главное.

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

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

    Как вы думаете, какая логика уместна в шаблонах? Просто я до сих пор не до конца понимаю, что же подразумевается под "плохой" логикой, которой не должно быть в шаблонах (сколько не читал материала на эту тему).

    И как следствие предыдущего вопроса - что, по вашему, лучше - статичные шаблоны (имеющие крайне минималистическую логику) или компилируемые (с более широкими возможностями)?

    P.S: Извините за некоторую сумбурность... Пишу ночью, не спится (сбил график напрочь), так что мысли слегка путаются :)
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Статичные шаблоны когда их логики хватает
    Компилируемые когда использовать статику не возможно в принципе
     
  3. svk

    svk Активный пользователь

    С нами с:
    7 авг 2006
    Сообщения:
    506
    Симпатии:
    0
    Адрес:
    NetByNet
    у меня в шаблонах используются конструкции
    {%if (..) }..{%else}...{/if}
    {%php}....{/php}
    {%include ...} //по умолчанию отключено

    мне хватает :)
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    svk
    То что тебе хватает не означает что хватит всем, бывают сайты где 10 000 посетителей это далеко не придел :) (и это я только рассматриваю "скоростной" аспект)
     
  5. TiGR

    TiGR Активный пользователь

    С нами с:
    3 сен 2006
    Сообщения:
    39
    Симпатии:
    0
    Адрес:
    Ижевск
    Условия if парсятся или дана полная свобода действий?
     
  6. ONK

    ONK Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    281
    Симпатии:
    0
    Адрес:
    СПб
    Шаблон ничего не запрашивает и ничего не отображает. Это просто место, в котором храниться html код отделённый от программного кода приложения. Внедрение таких шаблонов даже не требует изменения принципов работы скриптов/логики объединения данных с html кодом, т.к. не накладывает особых условий на проектирование кода.

    Внедрение в шаблон логики нарушает этот закон и вводит новый логический слой/задачу/необходимость/понятие - программирование шаблонов.

    Лично с моей точки зрения как человека, разрабатывавшего (-ющего в свободное время) относительно крупный проект, это приводит лишь к общему усложнению прикладного кода, разрастанию его объёмов, замедлению его работы и усложнению его поддержки и сопровождения, необходимости всюду "таскать за собой" библиотеку шаблонизатора имеющую здоровенный размер. Помимо этого при каждой "необходимости" нужно проводить обучение новых сотрудников синтаксису "языка программирования шаблонов", или искать тех, кто уже с ним знаком.
     
  7. svk

    svk Активный пользователь

    С нами с:
    7 авг 2006
    Сообщения:
    506
    Симпатии:
    0
    Адрес:
    NetByNet
    свобода.