DudeTpl. Компилирующий шаблонизатор с минималистичным синтаксисом

пример

http://helldude.ru/projects/php/DudeTpl/trunk/

началось все тут — http://pyha.ru/forum/topic/2788.0. закончилось бета версией сего чуда, этот шаблонизатор войдет в ближайшую бета версию DudeCMS Lite — файловую кмс. Почему файловую? потмоу что мне так удобно, думаю что не только мне ) зачем я ее сделал? не ваше дело, мое личное время трачу куда хочу.

вобщем, вот небольшой кусок кода как его использовать = http://helldude.ru/code/Xw1fRm

<?php
require_once ‘libs/DudeTpl.php’;

header(«Content-type: text/html; charset=utf-8″);

$start = microtime(true);
$tpl = new DudeTpl(true);

$tpl->add_function(«strlen»,create_function(‘$x’,‘return «А ВОТ ХУЙ ВАМ!»;’));
$tpl->add_block_function(‘hash’,«dude_hash_test»);
$tpl->items = array(«10″, «20″, «ахуеть!<>»);

echo $tpl->fetch(«index»,true);
echo «<b>Generation time &mdash; «.(microtime(true)-$start).«</b>»;

function dude_hash_test($tpl,$repeat,$content,$algo,$salt)
{
if(!$repeat)
{
return;
}

return $algo($content.$salt);
}

как вы могли заметить, этот шаблонизатор имеет похожую идею с шаблонизатором — smarty. Но чуток другую реализацию

Минусы:
- функционал поменьше чем у смарти (нет модификаторов — пока?!)
- больше не нашел ..

Плюсы:
- Лаконичность шаблонов
- Классы — компиляторы экспрешнов может писать даже школьник на коленке, там все просто
- Можно добавлять в ОБЪЕКТ шаблонизатора НУЖНЫЕ функции, а ненужные не надо :) )
- Можно добавлять блочные функции
- лаконичный синтаксис для escape, urlencode.
- лаконичный синтаксис в общем
- ахуенно быстро компилирует и выполняет код шаблонов (мне так показалось что ахуенно быстро)
- небольшой функционал(это и правда плюс)

- метод fetch($tpl,$force_recompile = false). если $tpl имеет абсолютный путь до файла = $tpl{0} == «/» то tempaltes_dir не испольуется :) плюс этого в том, что можно не париться за эти мелочи :) ) force_recompile флаг говрит шаблонизатору «ПЕРЕКОМПИЛИРУЙ при каждом вызове шаблона». Используется мной для разработки самого шаблонизатора, думаю может и вам для каких нить целей пригодиться :) )

Сейчас поддерживаются:

- вывод переменной, в том числе ее вывод функциями htmlspeciachars, urlencode

- Комментарии шаблона

- Условные операторы. Имеют двойной синтаксис — [?expr](if expr), [?!](else),[/?](/if) и для стариков :) [if expr] [else] [/if]

- Оператор перебора массива. Так же двойной синтаксис =  [&items](тут id = «_id», а элемент массива внутри форич блока = _item), [&items id](тут _item и id=»id» потому что мы явно указали идентификатор ключа)

- Оператор вызова пользовательской функции

- Оператор вызова блочной пользовательской функции.

Вроде бы все, надеюсь ничего не забыл)

Планируется:

- Галочка «Запретить вызывать пхп код внутри шаблона»

- Галочка «Запретить вызывать пхп функции с помощью оператора пользовательской функции»

- Метод show($tpl, $force_recompile).

Где скачать сие чудо — DudeTpl 0.1 Beta- https://src.helldude.ru/projects/PHP/DudeTpl/trunk/

пример синтаксиса — http://helldude.ru/projects/php/DudeTpl/trunk/

Отзывы оставляйте здесь.

кстати забыл сказать, что время генерации на тест страничке — при force_recompile = true. время вывода компилированного шаблона у меня на буке было около Generation time — 0.000792026519775

  1. Troy
    28th Июнь 2009 в 21:35

    Браво = ))

  2. 29th Июнь 2009 в 12:42

    пиздец
    нихуя кода не видно

  3. artoodetoo
    29th Июнь 2009 в 13:06

    реально не видно

  4. 29th Июнь 2009 в 17:02

    теперь ахуенно?

  5. artoodetoo
    30th Июнь 2009 в 07:32

    о да!

  6. maxyc webber
    15th Июль 2009 в 14:54

    говнокод какой то

  7. no name
    4th Август 2009 в 21:54

    Этот лучше http://codepaste.ru/2233/

  8. 24th Февраль 2010 в 00:50

    там настоящий говнокод