Twig

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Twig
Тип

обработчик шаблонов

Автор

Armin Ronacher, Fabien Potencier

Разработчик

Fabien Potencier, Sensio Labs

Написана на

PHP

Первый выпуск

12 октября 2008

Последняя версия

1.18.0 (январь 2015)

Состояние

актуальное

Лицензия

BSD

Сайт

twig.sensiolabs.org

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

Сам Fabien Potencier рассказывает о нём:

Когда я приступил к поиску PHP шаблонизатора, я сосредоточился на библиотеках копирующих поведение Django. Спустя несколько часов «гугления» был найден Twig. Его автором является Armin Ronacher, известный по проекту Jinja (шаблонизатор для Python). Несомненно я испытываю крайнее уважение к Армину за его замечательную работу над Jinja. Twig скорее похож на Jinja, чем на Django, как описано в реализации.

Когда я взглянул на код, я сразу понял что это то, что я ищу. Главное отличие от Calypso в том, что Twig компилирует шаблоны в обычный PHP-код. Я начал использовать эту библиотеку и в конце этой недели спросил у Армина не желает ли он дать своему проекту новую жизнь. Его ответ был полон энтузиазма, и я приступил к изучению кода. Моя версия сильно отличается от версии Армина, но «лексер» и «парсер» сохранены почти в исходном виде.

Я потратил всего несколько дней на работу над кодом, но я уже горжусь результатом и думаю что пора показывать библиотеку публично. Вчера я написал документацию и сделал простой сайт. Осталось ещё много работы: закончить документацию, добавить тесты и PHPDoc; но код уже целостен и функционален:

  • Встроенное наследование шаблонов (шаблоны компилируются как классы)
  • Автоматическое экранирование (отсутствие дополнительного времени на запуск — все делается во время компиляции)
  • Сверхбезопасный режим «песочницы» (список допустимых тегов, фильтров и методов которые разрешены в шаблоне)
  • Расширяемость: вы можете переписавать все что угодно, даже функции ядра, написав расширение; так же можно манипулировать AST перед компиляцией. Используя эти возможности вы можете создать даже свой собственный DSL-язык, ориентированный на ваше приложение.

Несмотря на то что Twig самый функциональный шаблонизатор, он ещё и самый быстрый.

Перевод статьи из личного блога

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]