IO v6. Twig шаблонизатор и работа с ним
Ссылки
Описание
Twig — современный шаблонизатор для PHP.
- Быстрый: Twig компилирует шаблоны до простого оптимизированного кода PHP. Накладные расходы по сравнению с обычным кодом PHP были сведены к минимуму.
- Безопасный: Twig имеет режим песочницы для оценки ненадежного кода шаблона. Это позволяет использовать Twig в качестве языка шаблонов для приложений, в которых пользователи могут изменять дизайн шаблона.
- Гибкий: Twig работает на основе гибкого лексера и парсера. Это позволяет разработчику определять собственные теги и фильтры, а также создавать собственный DSL.
Чем Twig лучше PHP в качестве шаблонизатора?
Когда дело доходит до шаблонизаторов в PHP, многие скажут вам, что PHP сам по себе является шаблонизатором. Но даже если PHP начинал свою жизнь как язык шаблонов, он не развивался как таковой в последние годы. По сути, он не поддерживает многие функции, которые должны быть у современных шаблонизаторов в настоящее время:
- Краткий: язык PHP многословен и становится смехотворно многословным, когда дело доходит до экранирования вывода:
<?php echo $var ?>
<?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>
Для сравнения, Twig имеет очень лаконичный синтаксис, что делает шаблоны более читабельными:
{{ var }}
{{ var|escape }}
{{ var|e }} {# shortcut to escape a variable #}
- Синтаксис, ориентированный на шаблоны. В Twig предусмотрены сокращения для распространенных шаблонов, например, для отображения текста по умолчанию при итерации по пустому массиву:
{% for user in users %}
* {{ user.name }}
{% else %}
No users have been found.
{% endfor %}
- Полнофункциональный: Twig поддерживает все необходимое для простого создания мощных шаблонов: множественное наследование, блоки, автоматическое экранирование вывода и многое другое:
{% extends "layout.html" %}
{% block content %}
Content of the page...
{% endblock %}
- Легко освоить: синтаксис прост в освоении и оптимизирован, чтобы позволить веб-дизайнерам быстро выполнять свою работу, не мешая им.
Конечно, PHP — это также язык, для которого вы можете найти больше проектов шаблонизаторов. Но большинство из них пока не принимают лучшие практики веб-разработки:
- Расширяемый: Twig достаточно гибок для всех ваших потребностей, даже самых сложных. Благодаря открытой архитектуре вы можете реализовать собственные языковые конструкции (теги, фильтры, функции и даже операторы) для создания собственного DSL.
- Модульное тестирование: Twig полностью модульное тестирование. Библиотека стабильна и готова к использованию в крупных проектах.
- Документация: Twig полностью документирован, имеется специальная онлайн-книга и, конечно же, полная документация по API.
- Чистые сообщения об ошибках: всякий раз, когда у вас возникает проблема с синтаксисом в шаблоне, Twig выводит полезное сообщение с именем файла и номером строки, где возникла проблема. Это значительно облегчает отладку.
- Быстрый: Одна из целей Twig — быть максимально быстрым. Чтобы достичь максимально возможной скорости, Twig компилирует шаблоны в простой оптимизированный PHP-код. Накладные расходы по сравнению с обычным PHP-кодом были сведены к минимуму.
- Безопасность: Что касается безопасности, Twig обладает рядом уникальных особенностей.
Особенности:
- Автоматическое экранирование вывода : Чтобы обезопасить себя, вы можете включить автоматическое экранирование вывода глобально или для блока кода:
{% autoescape "html" %}
{{ var }}
{{ var|raw }} {# var won't be escaped #}
{{ var|escape }} {# var won't be doubled-escaped #}
{% endautoescape %}
- Песочница : Twig может оценить любой шаблон в среде песочницы, где пользователь имеет доступ к ограниченному набору тегов, фильтров и методов объектов, определенных разработчиком. Песочница может быть включена глобально или локально только для некоторых шаблонов:
{{ include('page.html', sandboxed = true) }}