pilot911
Новичок
Какие мнения о шаблонизаторе Twig ?
Читаю перевод:
Twig — шаблонизатор для PHP, написанный Armin Ronacher и улучшеный автором фреймворка Symfony, сделанный по стопам Django (который, кстати, черпал идеи из Smarty).
Основные вкусности:
- Быстрая компиляция в php-код (быстрее остальных).
- Режим песочницы с ограничением допустимых конструкций.
- Хороший расширяемый код с API.
- Простой компактный синтаксис.
- Вкусности Django: наследование, блоки и т.д.
- Код покрыт модульными тестами.
- Полностью документирован (и API тоже).
- Внятные сообщения об ошибках.
Синтаксис такой:
{{ foo.bar }}
{{ foo['bar'] }}
{% for user in users %}
...
{% endfor %}
{% block head %}
<link rel="stylesheet" href="style.css" />
<title>{% block title %}{% endblock %} - My Webpage</title>
{% endblock %}
{% extends "layout/default.html" %}
{% if 1 < foo < 4 %}foo is between 1 and 4{% endif %}
Кроме того, поддерживает фильтры, математические функции и плагины ( http://wiki.github.com/vito/chyrp/twig-reference )
По скорости в 4 раза быстрее смарти. Интересно, стоит ли его использовать вместо среднефункционального Blitz ?
ПС. Нашел сравнение по скорости
Library Time (sec) Memory (Ko) Templates rendered per second
Twig 3 1,190 3,333
PHPTAL 3.8 2,100 2,632
Dwoo 6.9 1,870 1,449
Smarty 2 12.9 2,350 775
Smarty 3 14.9 3,230 671
Calypso 34.3 620 292
eZ Templates 53 5,850 189
I benchmarked a template that includes a simple template (one output and a for loop on three items) and decorated with a simple layout. The times are for the average of ten runs; a run consisting of one compilation of the template and 10,000 rendering of it. For engines that do not support inheritance, I have used a header and a footer instead, and for engines that do not support automatic output escaping, escaping has been done by hand.
http://fabien.potencier.org/article/34/templating-engines-in-php
-~{}~ 25.10.09 07:09:
занятно, получил результат... немного шокирующий: разница с Blitz составляет более 20 раз, причем Twig кеширует шаблон:
Twig:
Blitz:
Читаю перевод:
Twig — шаблонизатор для PHP, написанный Armin Ronacher и улучшеный автором фреймворка Symfony, сделанный по стопам Django (который, кстати, черпал идеи из Smarty).
Основные вкусности:
- Быстрая компиляция в php-код (быстрее остальных).
- Режим песочницы с ограничением допустимых конструкций.
- Хороший расширяемый код с API.
- Простой компактный синтаксис.
- Вкусности Django: наследование, блоки и т.д.
- Код покрыт модульными тестами.
- Полностью документирован (и API тоже).
- Внятные сообщения об ошибках.
Синтаксис такой:
{{ foo.bar }}
{{ foo['bar'] }}
{% for user in users %}
...
{% endfor %}
{% block head %}
<link rel="stylesheet" href="style.css" />
<title>{% block title %}{% endblock %} - My Webpage</title>
{% endblock %}
{% extends "layout/default.html" %}
{% if 1 < foo < 4 %}foo is between 1 and 4{% endif %}
Кроме того, поддерживает фильтры, математические функции и плагины ( http://wiki.github.com/vito/chyrp/twig-reference )
По скорости в 4 раза быстрее смарти. Интересно, стоит ли его использовать вместо среднефункционального Blitz ?
ПС. Нашел сравнение по скорости
Library Time (sec) Memory (Ko) Templates rendered per second
Twig 3 1,190 3,333
PHPTAL 3.8 2,100 2,632
Dwoo 6.9 1,870 1,449
Smarty 2 12.9 2,350 775
Smarty 3 14.9 3,230 671
Calypso 34.3 620 292
eZ Templates 53 5,850 189
I benchmarked a template that includes a simple template (one output and a for loop on three items) and decorated with a simple layout. The times are for the average of ten runs; a run consisting of one compilation of the template and 10,000 rendering of it. For engines that do not support inheritance, I have used a header and a footer instead, and for engines that do not support automatic output escaping, escaping has been done by hand.
http://fabien.potencier.org/article/34/templating-engines-in-php
-~{}~ 25.10.09 07:09:
занятно, получил результат... немного шокирующий: разница с Blitz составляет более 20 раз, причем Twig кеширует шаблон:
Twig:
PHP:
require_once 'twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_String('path_to_cache', false);
$twig = new Twig_Environment($loader);
$template = $twig->loadTemplate('Hello {{ name }}!');
$template->display(array('name' => 'Fabien'));
Blitz:
PHP:
$body = <<<BODY
hello, {{\$name}}!
BODY;
$Template = new Blitz();
$Template->load($body);
$Template->set(array('name' => 'Fabien'));
echo $Template->parse();