Последние записи в блоге

Представляем вашему вниманию русскоязычную документацию по Twig - PHP  шаблонизатору, который используется в нашей системе администрирования FenixCMS. Twig один из шаблонизаторов, который был выбран нами для шаблонизации и отображения страниц, в силу его гибкости и скорости. 

В интернете мы не нашли исчерпывающей документации по данному вопросу на русском языке, поэтому нам пришлось взяться за эту работу. Нам очень важно, чтобы работа с FenixCMS была как можно более простой и удобной.

Твиг - современный шаблонизатор для PHP

Twig как шаблонизатор по синтаксису чем-то похож на Smarty и не уступает в гибкости XSLT

Основные его особенности:

  • Быстрый: компилирует шаблоны в PHP код. Добавочный, относительно нативного PHP, код был сведен к минимуму.
  • Безопасный:  есть режим «песочницы» для проверки сомнительного кода в шаблонах. Это позволяет использовать Twig в качестве языка шаблонов для приложений, где пользователи могут менять дизайн шаблонов.
  • Гибкий: основан на пластичном лексере и парсере. Это позволяет разработчику определять свои собственные тэги и фильтры, создавать свой DSL.

Зачем нужен еще один шаблонизатор?

Twig использует гибко настраиваемые лексический и грамматический анализаторы. Это позволяет разработчику определять свои теги и фильтры, создавать собственный DSL.

  1. Краткость: Язык PHP многословен и даже слишком многословен, когда нужно экранировать вывод данных:
    echo $var;
    echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
  2. Twig имеет более лаконичный синтаксис, который позволяет легко читать шаблоны:

    {{ var }}
    {{ var|escape }}
    {{ var|e }}         {# сокращение для escape #}
  3. Ориентированный на шаблоны синтаксис: Twig имеет сокращения для многих общих паттернов, например, отображение текста по умолчанию, если вы перебираете пустой массив:
    {% for user in users %}
    	* {{ user.name }}
    {% else %}
    	Пользователи не найдены.
    {% endfor %}
    
  4. Полнофункциональный: поддерживает все, что необходимо для использования шаблонов: множественное наследование, блоки, автоматическое экранирование и многое другое:
    {% extends "layout.html" %}
    
    {% block content %}
    	Содержимое страницы...
    {% endblock %}
    
  5. Легок в изучении: Синтаксис прост в изучении и оптимален для верстальщиков, что позволяет им быстро выполнять свою работу.

Конечно, для PHP написано большое число шаблонизаторов. Но большинство из них написаны под PHP4 и не используют лучшие практики разработки:

  1. Расширяемость: Твиг это гибкий движок для любых ваших потребностей, даже самых сложных. Благодаря открытой архитектуре, вы можете определять новые языковые конструкции (тэги и фильтры) для создания своего собственного DSL.
  2. Юнит-тестирование: Твиг полностью покрыт тестами. Библиотека стабильна и готова к использованию в больших проектах.
  3. Документация: Tвиг полностью документирован, вся документация доступна на сайте, и, конечно, имеет полное описание API.
  4. Безопасность: В отношении безопасности, имеется несколько совершенно уникальных особенностей:
    1. Автоматическое экранирование вывода: Для безопасного вывода данных, вы можете включить экранирование как глобально, так и для отдельных блоков:
      {% autoescape on %}
      {% var %}
      {% var|safe %}     {# var не экранируется #}
      {% var|escape %}   {# var не экранируется дважды #}
      {% endautoescape %}
    2. Песочница: Twig позволяет использовать для любого шаблона "песочницу", где пользователи имеют ограниченный набор тэгов, фильтров и методов объектов, определенных разработчиком. Режим "песочницы" может быть включен как глобально, так и локально, для определенных шаблонов:
      {{ include "user.html" sandboxed }}
  5. Чистые сообщения об ошибках: Каждый раз, когда у вас возникают синтаксические ошибки в шаблоне, шаблонизатор выводит сообщение о имени файла с ошибкой и номере строки, которая ее вызвала. Это очень упрощает отладку.
  6. Быстрый: Одна из целей создания данного шаблонизатора - сделать его настолько быстрым, насколько это возможно. Для достижения максимальной скорости работы, Twig компилирует шаблоны в оптимизированный PHP код. Использование памяти по сравнению с обычным PHP кодом сведено к минимуму.

Кто создал Twig?

Twig написан Fabien Potencier, создателем фреймворка Symfony и распространяется по новой лицензии BSD.