За последние 24 часа нас посетили 18109 программистов и 1684 робота. Сейчас ищут 1075 программистов ...

Простейший шаблонизатор с использованием самого пхп

Тема в разделе "Решения, алгоритмы", создана пользователем Gromo, 1 ноя 2010.

  1. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Само собой, но сам факт что хоть это и ужас в десятой степени, факт что в принципе "пока что" всё в норме
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Vladson
    с просветлением =)
     
  3. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Всё что угодно можно легко превратить (тебе ли с твоим стажем на форуме не знать)

    Просветление у меня не в этом, это я давно знаю, а вот что есть те кто согласны со мной в этом, это сюрприз
     
  4. Carella

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

    С нами с:
    26 окт 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    Челябинск
    Мне в шаблонизаторах не нравится 2 момента. По определению шаблонизатора надо отделить мух от котлет, т.е. в html не должно быть никакой логики, а в коде не должно быть вывода ни одного пробела.

    Почти все шаблонизаторы грешат мухами в котлетах. И обычно эти мухи выглядят так:

    1. Использование в шаблоне циклов, типа foreach. Есть шаблонизаторы которые даже допускают конструкции циклов for и while.
    2. Использование условий для отображения чего-нибудь.

    Оба пункта по определению - логика и значит основная задача шаблонизатора не выполнена. Отсюда вытекает куча проблем с управлением проектом. Когда мне надо найти верстальщика, причем как правило я требую чтобы он натянул свою работу на проект, а то там столько тонкостей возникает, практически все отказываются делать под шаблон. Но когда видят структуру мои шаблонов, где нету никаких циклов, никаких условий, то соглашаются и делают верстку без проблем.
    Я пользуюсь php_templates. Хотя проект более не поддерживается (закрыт в 2001 году), тем не менее продукт является законченым и весьма удобным. и самый главный его плюс он является модулем расширения для php. По сравнению со smarty скорость обработки превышает не менее чем в 3 раза. Хотя это справедливо почти для всех шаблонизаторов которые компилятся в модуль, например Blitz и т.д.

    Сейчас конечно есть и более современные шаблонизаторы и тоже скомпиленые в модуль, но мне ближе старый добрый php_templates - фантастически гибкая вещь.
     
  5. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Carella
    некоторое время назад думал в точности так же
    Задача не убрать логику из шаблонов вообще, а отделить логику отображения, от бизнес логики и логики реляционного отображения объектов например
    Там должна быть логика, но отвечающая за отображение, например есть блок авторизации, если человек авторизован, то там должен быть его ник и выход, если нет, то форма авторизации... будем делать два варианта в разных файлах для верстальщика, а логику обрабатывать где то у себя? я уже напоролся на это, к чему эта каша?
    то что верстальщик не понимает циклов и простых логических конструкций, это уже его проблемы
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Padaboo
    +1
    Циклы, простейшие условия, форматы вывода - это всё задача шаблонизатора, абсолютно не нужная в контроллерах (если о разделении говорить)
     
  7. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    У меня всегда один вопрос к людям, которые хотят убрать циклы из шаблона:
    Как таблицу выводить будете?
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Легко! Надо 3 шаблона: таблица (table) с переменной $rows, строка (tr) с переменной $fields, и собственно ячейка (td) с переменной $content. Берем например твой волшебный шаблонизатор, и...
    PHP:
    1. <?
    2. $table = new view('table.tpl');
    3. foreach ($data as $row) {
    4.      $trow = new view('trow.tpl');
    5.      foreach ($row as $field) {
    6.           $tfield = new view('tfield.tpl');
    7.           $tfield->content = $field;
    8.           $trow->fields .= $tfield;
    9.      }
    10.      $table->rows .= $trow;
    11. }
    12. echo $table;
    13.  
     
  9. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Ну на самом деле он твой... =))

    Действительно можно... Конечно, для таблицы 10х5 это будет 1+10+10*5=61 шаблон вместо одного, но должно работать. =)
     
  10. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    [vs]
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Оптимизируем: 1) собственно с диска в процессе выполнения скрипта, грузить один раз (загружать и складывать клона в какой-нить "буфер"), 2) кэшировать результат
    =)
     
  12. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Если это какой нибудь отчет (таблиц этак 10 с результирующими данными), то пункт 2 практически не применим.
     
  13. karlozzz

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

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    отпишусь и по своему

    Сам использую шаблонизатор на базе текстового процессора, который может включать в себя разнообразные операторы, при добавлении модулей автоматом и операторы добавляются, очень удобно, шаблоны сами в БД

    ПХП как шаблонизатор достаточно быстр, но мне очень сильно не нравится уменьшение читабельности кода, перемешка хтмл и пхп вообще раздражает, если не использовать разные эвалы, то придется хранить все это дело в файлах, не могу с ходу сказать, чем это хуже, но люблю все централизованно держать в БД