Twig
Twig — компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Армин Ронахер написал Twig в 2008 году для платформы блогов Chyrp. Он больше не возвращался к разработке и в большей степени занимался разработкой на Python. Синтаксис языка шаблонов Twig берёт начало от движков шаблонов Jinja и Django, первый из которых также создан Ронахером. Идею данного шаблонизатора развивает и поддерживает Фабьен Потенсье, ведущий разработчик и идеолог фреймворка Symfony, в котором Twig используется по умолчанию.
Twig | |
---|---|
Тип | обработчик шаблонов |
Автор | Armin Ronacher, Fabien Potencier |
Разработчик | Fabien Potencier, Sensio Labs |
Написана на | PHP |
Операционная система | кроссплатформенность |
Первый выпуск | 12 октября 2008 |
Последняя версия | |
Состояние | актуальное |
Лицензия | BSD |
Сайт | twig.symfony.com |
Сам Фабьен рассказывает о нём:
Когда я приступил к поиску PHP-шаблонизатора, я сосредоточился на библиотеках, копирующих поведение Django. Спустя несколько часов «гугления» был найден Twig. Его автором является Armin Ronacher, известный по проекту Jinja (шаблонизатор для Python). Несомненно, я испытываю крайнее уважение к Армину за его замечательную работу над Jinja. Twig скорее похож на Jinja, чем на Django, как описано в реализации.
Когда я взглянул на код, я сразу понял что это то, что я ищу. Главное отличие от Calypso состоит в том, что Twig компилирует шаблоны в обычный PHP-код. Я начал использовать эту библиотеку и в конце этой недели спросил у Армина, не желает ли он дать своему проекту новую жизнь. Его ответ был полон энтузиазма, и я приступил к изучению кода. Моя версия сильно отличается от версии Армина, но «лексер» и «парсер» сохранены почти в исходном виде.
Я потратил всего несколько дней на работу над кодом, но я уже горжусь результатом и думаю что пора показывать библиотеку публично. Вчера я написал документацию и сделал простой сайт. Осталось ещё много работы: закончить документацию, добавить тесты и PHPDoc; но код уже целостен и функционален:
- Встроенное наследование шаблонов (шаблоны компилируются как классы)
- Автоматическое экранирование (отсутствие дополнительного времени на запуск — все делается во время компиляции)
- Сверхбезопасный режим «песочницы» (список допустимых тегов, фильтров и методов которые разрешены в шаблоне)
- Расширяемость: вы можете переписывать все что угодно, даже функции ядра, написав расширение; также можно манипулировать AST перед компиляцией. Используя эти возможности, вы можете создать даже свой собственный DSL-язык, ориентированный на ваше приложение.
Несмотря на то, что Twig самый функциональный шаблонизатор, он ещё и самый быстрый.
Синтаксис
{{ ... }}
вывести значение переменной{# ... #}
комментарии.{% ... %}
запустить команду{% set foo = 'bar' %}
{% if i is defined and i == 1%} ... {% endif %}
{% for i in 0..10 %} ... {% endfor %}
Пример
Пример ниже демонстрирует некоторые основные особенности Twig.
{% extends "base.html" %}
{% block navigation %}
<ul id="navigation">
{% for item in navigation %}
<li>
<a href="{{ item.href }}">
{% if item.level == 2 %} {% endif %}
{{ item.caption|upper }}
</a>
</li>
{% endfor %}
</ul>
{% endblock navigation %}
Примечания
- Release 3.3.2 — 2021.
Ссылки
- Официальный сайт разработчиков Twig
- Русскоязычная документация
- Как я перешел со Smarty на Twig
- Smarty быстрее чем Twig