За последние 24 часа нас посетили 187115 программистов и 2136 роботов. Сейчас ищут 1675 программистов ...

Улучшенный нативный шаблонизатор [готовое решение]

Тема в разделе "Решения, алгоритмы", создана пользователем Mr.M.I.T., 21 май 2009.

  1. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Выкладывал где-то похожий, но он был совсем плох
    Вообщем может кому пригодится, код прошёл 2 часовую обкатку, багов не обнаружено
    Код оптимизирован не очень хорошо, но кеширование спасает, так что это особого значения не имеет

    Далее код + примеры
    от вас вопросы, критика(хотя зачем?), предложения
    http://codepaste.ru/2233/
     
  2. kostyl

    kostyl Guest

    Psih обязательно должен сказать
     
  3. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    kostyl
    А теперь послушаем что скажет начальник транспортного цеха! ©
     
  4. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    в следующий раз сделаю платный
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я считаю так:
    -Шаблонизатор должен облегчать процесс верстки, избавляя нас от набора ненужных символов
    -Шаблонизатор должен быть понятен верстальщику

    PHP:
    1.  
    2. // В test.tpl
    3.  
    4.  
    5. its some var 1 - {$some_var}<br>
    6. its some var 2 - {$some_var2}<br>
    7. {$nice_some_var=$some_var." but its nice var =)"}
    8. and its nice some var - {$nice_some_var}<br>
    9. {postcache}
    10. array: (no cache zone, rand num for test {rand(1,1000)})<br>
    11. {$array["some_key"]="some value"}
    12. {foreach($array as $key=>$val)}
    13.    {$key} => {$val} ,<br>
    14. {/foreach}
    15. {/postcache}
    16.  
    *DONT_KNOW*
     
  6. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Что всегда поражало, так это русские пишут for test, а американцы for the test purposes :)
     
  7. ну, хоть выражение «для теста» и расхожее в русском языке, но оно все равно неправильное.
     
  8. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Kreker
    в моём случае избавляет нас от <?=?>, увеличивает читабельность, сохраняя мощь и функциональность пыха
    а верстильщику сложнее будет привыкнуть "к языку шаблонизатора" чем к пыху
    And i must say, that im don't speak english
    Вот только что со школы помню
     
  9. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    и вообще, куда приятнее писать
    {foreach()}{/foreach}
    {if()}{else}{/if}
    Чем <?foreach(){?><?}?>
    <?if(){?><?}else{?><?}?>
     
  10. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    HTML:
    1. [:if username:]
    2.     Прювет, [:username:]!
    3. [:else:]
    4.     залогинься
    5. [:/if:]
    6.  
    7. <table class="dataTable">
    8.     <tr>
    9.         <td>id</td>
    10.         <td>name</td>
    11.         <td>registration date</td>
    12.     </tr>
    13.     [:loop users:]
    14.         <tr>
    15.             <td>[:id:]</td>
    16.             <td>[:name:]</td>
    17.             <td>[:registration_date:]</td>
    18.         </tr>
    19.     [:/loop:]
     
  11. shurastik

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

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    Вот объясните мне чем php сложнее чем smarty? никак не могу понять.

    единственный плюс, который увидел - ограничение свободы. получив доступ к нативному шаблону можно натворить всё что угодно.
     
  12. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Чтобы редактировать шаблоны, обычно нужны админские права - а имея админские права и так можно натвроить что угодно =)

    Если заменить еще фигурные скобки на что-то более красивое, то будет вообще класс =)
     
  13. shurastik

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

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    часто делят на админские и дизайнерские

    мне и пхп нравиться
     
  14. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    shurastik
    это и есть натив, толко "улучшенный", поддерживается всё кроме switch
    [vs]
    config:
    tpl_tag_open =>
    tpl_tag_close =>
     
  15. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    а смарти, это вообще непонятно что, "теговый TPL шаблонизатор" лучше уж xslt
     
  16. kostyl

    kostyl Guest

    Koc
    Кстати есть стандартный короткий синтаксис...
    ....
    ИХМО данный шаблонизатор уж слишком сложный, меня больше привлекает тот, что ты выложил в топике Коса, намного приятнее воспринимается, это я сейчас говорю о применении, а не о функциональности.
    А вообще ИХМО, пусть дизайнеры учат php, потому что тогда они не дизайнеры...
     
  17. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    и питон, руби, яву, асп ...

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

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Пускай программисты учат дизайн и юзабилити, а так же учатся рисовать.
     
  19. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Koc
    У нас в бумтайме работал дизайнер-верстальщик. Он естественно делал дизайны и верстал их. Знал он только голый HTML и CSS, даже JS не знал, не говоря уже о PHP. Ему хватило нескольких минут объяснений что есть что в шаблоне: условия, циклы, вывод на экран переменной из шаблонизатора. На следующий день он прекрасно лопатил всё сам и за неделю сам переверстал полностью все 150 с лишним шаблонов, подучил JS и немного PHP. Всё, у человека нет проблем никаких с пониманием написанного. Естественно вся сложная логика была внутри, а в шаблоне простейшие условия показать/не показать кнопку и циклы вывода данных.

    Так что всё это фигня что дизайнерам легче. Что касается конкретно PHP, он сам себе шаблонизатор. Он именно как шаблонизатор и был создан. Не пихайте лишнего в шаблон и будет вас великое счастье. За другие языки не говорю, потому что не работал и не знаю как там происходит вставка данных, но я не знаю другого языка, который бы позволил сделать вставку кода прямо в HTML как это позволяет PHP.
     
  20. kostyl

    kostyl Guest

    Ну я об этом и говорю. Вот есть заказчики, которые говорят "Делаем проект с использование смарти", чтобы он потом отдельно дизайнеров подключил и они ему оформили, как надо... Таким образом целесообразный программист делает найти с интерфейсом для смарти и гнет за это цену объясняя заказчику, что дешевле нанять дизайнера с навыками написать обычный цикл на php, чем городить эту всю фигню, потому что смарти загнётся в скором времени, и это реальная ситуация... Заказчик сказал "Давайте попробуем и так и так" и смарти загнулось...
     
  21. У меня подозрение, что все программисты, участвующие в дискуссии с аргументацией "верстальщику проще понять шаблонизатор" или "ограничение прав для верстальщика" никогда не работали с другими верстальщиками, кроме себя?
     
  22. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    флоппик
    хе-хе, я работаю. Он нормально воспринимает теги типа <TPL_INCLUDE:'path/to/template'>, <TPL_SUB:SOME_BLOCK>. Но не знает что такое чмод).
     
  23. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    флоппик
    Почему-же, работали. Все понимали простейшую логику :) В том же smarty тот-же foreach, и прочие конструкции, только куда более громоздкие. Так что ИМХО, натив PHP рулит :)
     
  24. Psih, так я тебя к числу них и не причислял )
     
  25. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Psih
    всё правельно говоришь, простейшую логику пхп понять можно за пару часов, а плюсом работы с нативом,в отличии от "языка шаблонизатора", является приобщение верстильщика к самому пхп, да и к тому же многие опытные верстильщики прекрасно знают основы пыха

    Смысл шаблонизатора который выложил, избавить меня от <??> и от <?{?><?}?>
    ну а так же, развитое кеширование