За последние 24 часа нас посетили 17949 программистов и 1614 роботов. Сейчас ищут 1453 программиста ...

Движок шаблонизатора

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

  1. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
    http://at.tut.by/stepanovsergey/Lapa.zip 40 кб. Обновляется ежедневно.
    Это не законченное решение, но данный момент скоро настанет.
    ++ решения
    поддержка синтаксиса smarty(что бы не учить еще один язык)
    мало чем отличается от php (выражения допустимы) $i++ = 5 / (-8) и т.п. array и т.п.
    не теряет производительность при больших шаблонах регулярки для поиска 1 на три экрана не используются
    можно собирать шаблоны в один
    можно писать переменные прямо в тексте <div>$var.text.1;</div>
    -- решения
    еще нет поддержки is even и т.п., не реализованы конфиги, это через плагины

    Просьба интерес проявлять на форуме, а не на мыло. прект свободный, ждет участников, и афторов которые имеют противоядие от йада, предлагают часто ;).
     
  2. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Чем тогда native-PHP не устраивает?
     
  3. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
    Vitas
    это флуд из разряда зачем php? когда есть джава.
     
  4. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    ustas, нет, это из разряда "зачем php на php?". ;)
     
  5. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
    lexa
    считаю что у такого типа шаблонов преимуществ больше, чем недостатков, практика показывает что применение промежуточных технологий уменьшает общие затраты. (соседу звонишь через атс, дешевле наверно кабель напрямую кинуть? Таких примеров в жизни и программировании на каждом шагу. www & c & c++ & php & template, вот неполный путь того что ты видишь на экране, убирая шаги, ты усложняешь результат. )
     
  6. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    наслышан про сие чудо. на выходных поковыряю.

    p.s. в phpclub участвую. =)
     
  7. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
    обновление http://at.tut.by/stepanovsergey/Lapa.zip 42 кб
    добавлена:
    поддержка #config_val#, плагин еще не портирован
    локальные переменные $$var
    поддержка доступа к массиву $var.1.$i.4.h - $var[1][$i][4]['h']
    доступ к объекту $var.е->r(5+5 / 4* $v++)->t.w - $var['e']->r(5+5 / 4* $v++)->t['w']
    section уехал в плагины (для совместимости), loop более быстрый и удобней
    глобальные переменные lapa & smarty
    переписан парсер выражений
    комментарии в стиле php // блокирует до конца строки /* - до конца блока, */ завершает
    {set $var = 1 + /* добавляем значение*/ 5}
    {set $var = 1 + 5/*
    комменты }
    конструкции типа is even будут реализованы таким образом {[! - not] even($var [, $var2]) }, проверку синтаксиса (уровень вложенности и т.п.) конструкций такого типа сделать довольно сложно (smarty их не контролирует.), если мысли есть, пишем.

    440Hz
    буду рад
     
  8. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
  9. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
  10. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
  11. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
  12. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
    текущие релизы можно скачать с форкма dklab.ru
     
  13. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Проект еще жив?
     
  14. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
  15. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
  16. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Хех :)
    Хочу красивых примеров использования :)
     
  17. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
    в папке test_template начал потихоньку, вообще базовый синтаксис не отличается от smarty, хотя в отличие от него в параметры можно передавать не имена переменных, а сами переменные
     
  18. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
  19. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    думаю тебе стоит сделать простенький сайт, где первым делом расписать преимущества движка и основные правила работы с ним...
     
  20. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Присоединяюсь. Проекту нужен дом в интернете :)
    *кхм* могу дать поддомен lapa.phpc.ru и хостинг. "phpc" здесь = "PHP Community" :)
     
  21. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
    тест популярных шаблонизаторов http://at.tut.by/stepanovsergey/bench.zip 350 кб
    добавил несколько шаблонизаторов, некоторые не пашут, при моих настройках.
    blitz можно скачать на http://sourceforge.net/ самый быстрый, но решение на с.

    оригинал теста взят здесь http://alexeyrybak.com/blitz/lebowski_bench.tar.gz

    если не считать провалы дисковых операций (и винт у меня на буке не скоростной, и вытесняющая многозадачность),
    Lapa оставляет конкурентов далеко позади. -Ю-Ю-Ю вот настолько :)

    Dagdamor
    за предложение спасибо, если что свяжусь.
     
  22. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    ustas
    А как ты замерял? Что-то я не вижу в этих паках никаких замеров (или проглядел?)
    Маленькое предложение - грохать кеш перед публикацией, чтобы ничего лишнего не было в архиве.
    Еще вопрос - в какой кодировке в Лапе файлы TODO и Syntax language? :)

    Ну это понятно... с нативным кодом не поспоришь...
    У меня как-то была идея для моего шаблонизатора - если на серваке установлен опкод кеш, то хранить кешированные шаблоны не в виде PHP кода, а в виде опкодов. Было бы еще быстрее, может даже сравнилось бы по скорости с нативными функциями. К сожалению, не смог придумать, как это можно реализовать (у Турка не было встроенной возможности кешировать опкоды напрямую, без сохранения исходного кода на диске, а у APC даже еще беднее API).
     
  23. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
    Dagdamor
    кои8r, по ошибке сохранил, исправлю.
    меряю xdebug, ничего лучше не знаю. смотрю в wincachegrind.
    Если APC или подобные ему установлены, они сами сохранят опкоды, и при последующем вызове возьмут из кеша.
    оно и так сравнимо, 10 ms на загрузку класса не играет роли, при включеном оптимизаторе и с подобным из семейста APC это перестает быть главным аргументом противников шаблонизаторов.
     
  24. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    ustas
    У меня другая ситуация была... у меня и шаблоны хранятся в БД, и их кешированные версии тоже, поэтому APC до них добраться не может. В конце концов сделал плагин для движка, который позволяет хранить кешированные шаблоны в виде файлов - специально для нагруженных проектов. Хотя это уже немного оффтоп.

    Обычно главный аргумент - "зачем нужен шаблонизатор, если PHP сам по себе шаблонизатор" ;)
     
  25. ustas

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

    С нами с:
    17 сен 2007
    Сообщения:
    59
    Симпатии:
    0
    завтра выпуск новой версии, beta конечно, оптимизирован парсер
    Добавил альтернативный синтаксис
    <tpl: foreach from="data" item="val" />
    ороро
    <tpl:foreachelse />
    оолло
    <tpl:endforeach />
    и директивы для отладки
    /*
    directive debug=highlight_output
    directive debug=list_tokens
    directive debug=exit
    */
    отладка стала увлекательным делом :)