Twig

Twig — компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Армин Ронахер написал Twig в 2008 году для платформы блогов Chyrp. Он больше не возвращался к разработке и в большей степени занимался разработкой на Python. Синтаксис языка шаблонов Twig берёт начало от движков шаблонов Jinja и Django, первый из которых также создан Ронахером. Идею данного шаблонизатора развивает и поддерживает Фабьен Потенсье, ведущий разработчик и идеолог фреймворка Symfony, в котором Twig используется по умолчанию.

Twig
Тип обработчик шаблонов
Авторы Armin Ronacher, Fabien Potencier
Разработчики Fabien Potencier, Sensio Labs
Написана на PHP
Операционная система кроссплатформенность
Первый выпуск 12 октября 2008
Последняя версия
Репозиторий github.com/twigphp/Twig
Состояние актуальное
Лицензия 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 %}&nbsp;&nbsp;{% endif %}
                {{ item.caption|upper }}
            </a>
        </li>
    {% endfor %}
    </ul>
{% endblock navigation %}

См. также править

Примечания править

  1. Release 3.9.3 — 2024.

Ссылки править