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 — «.(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

Браво = ))
пиздец
нихуя кода не видно
реально не видно
теперь ахуенно?
о да!
говнокод какой то
любое мнение — мнение
Этот лучше http://codepaste.ru/2233/
там настоящий говнокод