Twig
| Twig | |
|---|---|
| Тип | обработчик шаблонов |
| Авторы | Armin Ronacher, Fabien Potencier |
| Разработчики | Fabien Potencier, Sensio Labs |
| Написана на | PHP |
| Операционная система | кроссплатформенность |
| Дата выпуска | 12 октября 2008 |
| Последняя версия | |
| Репозиторий | github.com/twigphp/Twig |
| Состояние | актуальное |
| Лицензия | BSD |
| Сайт | twig.symfony.com |
Twig — компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Армин Ронахер написал Twig в 2008 году для платформы блогов Chyrp. Он больше не возвращался к разработке и в большей степени занимался разработкой на Python. Синтаксис языка шаблонов Twig берёт начало от движков шаблонов Jinja и Django, первый из которых также создан Ронахером. Идею данного шаблонизатора развивает и поддерживает Фабьен Потенсье, ведущий разработчик и идеолог фреймворка Symfony, в котором Twig используется по умолчанию.
Сам Фабьен рассказывает о нём:
Когда я приступил к поиску 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.22.1 — 2025.
Ссылки
- Официальный сайт разработчиков Twig
- Русскоязычная документация
- Как я перешел со Smarty на Twig
- Smarty быстрее чем Twig
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.