Тюнниг php как шаблонизатора.
Собственно почему возникла тема, не ради холивара, а ради оценки моего подхода к использованию пхп в качестве шаблонизатора.
Базируется шаблонизатор на технологии описанной еще отцами
, а именно
Чем была вызвана необходимость делать предобработку шаблона?
- замена коротких тегов <? ?> -> <?php ?>
- применение автоматически эскейпинг
, после компиляции раскрывается в код
- модификаторы
, соответствует синтаксису пхп, что удобно в редакторах с подсветкой синтаксиса
- внутренние функции шаблонизатора можно использовать без $this (
), раскроется <?php echo $this->_t($vars)?>[/PHP]
Теперь о главном, всегда убивало писать кучу лишнего html для вывода тривиальной таблички с сортировкой, по сему раз уж всеравно делается компиляция, то почему не вставить туда расширения в виде widget-ов.
Все это вылилось вот в такую красивость (с моей точки зрения)
соответственно после компиляции мы получаем чистый пхп шаблон но уже с созданием видджета и его отрисовкой. создавая виджеты можно писать более чистый шаблон. Вот собственно такова идея и реализация.
Почему не smarty, twig etc
Нет простоты и понятности, смарти3, это танцы с бубном, к примеру для для создания аналога <widget:table> <table:column title="URL" align="left" width="240px"/>...
надо очень постараться. Решения с экстеншеном оправданы если есть хотя бы vps и в состоянии скопилировать и прикрутить его к php . Про синтаксис я уж промолчу, кто как хочет таки и .... делает.
Собственно почему возникла тема, не ради холивара, а ради оценки моего подхода к использованию пхп в качестве шаблонизатора.
Базируется шаблонизатор на технологии описанной еще отцами

PHP:
class TemplatePhp
{
public function __get(...){...}
public function __set(...){...}
public function fetch(...)
{
...
if($this->__compileTemplate($templateFileName))
{
if(is_array($this->__template_vars))
extract($this->__template_vars,EXTR_REFS|EXTR_OVERWRITE);
ob_start();
include($templateFileName);
$_sub_template_contents = ob_get_contents();
ob_end_clean();
return $_sub_template_contents;
}
...
}
}
- замена коротких тегов <? ?> -> <?php ?>
- применение автоматически эскейпинг
PHP:
<?=$var?>
PHP:
<?php echo htmlspecialchars($vars)?>
PHP:
<?=$var|!escape?>
- внутренние функции шаблонизатора можно использовать без $this (
PHP:
<?=_t('stringID')?>
Теперь о главном, всегда убивало писать кучу лишнего html для вывода тривиальной таблички с сортировкой, по сему раз уж всеравно делается компиляция, то почему не вставить туда расширения в виде widget-ов.
Все это вылилось вот в такую красивость (с моей точки зрения)
PHP:
<widget:table>
<table:column title="URL" align="left" width="240px"/>
<table:group title="Group1" />
<table:column title="Column1"/>
<table:column title="Column2"/>
...
<table:rows rows=$Top10 />
</widget:table>
Почему не smarty, twig etc
Нет простоты и понятности, смарти3, это танцы с бубном, к примеру для для создания аналога <widget:table> <table:column title="URL" align="left" width="240px"/>...
надо очень постараться. Решения с экстеншеном оправданы если есть хотя бы vps и в состоянии скопилировать и прикрутить его к php . Про синтаксис я уж промолчу, кто как хочет таки и .... делает.