Fork me on GitHub

Макеты

В нашем приложении мы используем шаблонизатор Twig.

Все наши шаблоны находятся здесь app/Views.

Назначение шаблонов:

  • Вывод пользовательских данных при обращении к действию контроллера app/Views/Controller/
  • Внешний вид формы app/Views/Form/
  • Вставить отдельную часть данных в макет app/Views/Include/
  • Макеты для вывода содержания сайта app/Views/Layout/

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

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

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

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

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

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

  1. Краткость язык PHP многословен и даже слишком многословен, когда нужно экранировать вывод данных
  2. Twig имеет более лаконичный синтаксис, который позволяет легко читать шаблоны
  3. Ориентированный на шаблоны синтаксис Twig имеет сокращения для многих общих паттернов, например, отображение текста по умолчанию, если вы перебираете пустой массив
  4. Полнофункциональный поддерживает все, что необходимо для использования шаблонов множественное наследование, блоки, автоматическое экранирование и многое другое
  5. Легок в изучении синтаксис прост в изучении и оптимален для верстальщиков, что позволяет им быстро выполнять свою работу.

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

  1. Расширяемость: Твиг это гибкий движок для любых ваших потребностей, даже самых сложных. Благодаря открытой архитектуре, вы можете определять новые языковые конструкции (тэги и фильтры) для создания своего собственного DSL.
  2. Юнит-тестирование: Твиг полностью покрыт тестами. Библиотека стабильна и готова к использованию в больших проектах.
  3. Документация: Tвиг полностью документирован, вся документация доступна на сайте, и, конечно, имеет полное описание API.
  4. Безопасность: В отношении безопасности, имеется несколько совершенно уникальных особенностей:
    • Автоматическое экранирование вывода: Для безопасного вывода данных, вы можете включить экранирование как глобально, так и для отдельных блоков.
    • Песочница: Twig позволяет использовать для любого шаблона "песочницу", где пользователи имеют ограниченный набор тэгов, фильтров и методов объектов, определенных разработчиком. Режим "песочницы" может быть включен как глобально, так и локально, для определенных шаблонов
    • Чистые сообщения об ошибках: Каждый раз, когда у вас возникают синтаксические ошибки в шаблоне, шаблонизатор выводит сообщение о имени файла с ошибкой и номере строки, которая ее вызвала. Это очень упрощает отладку.
    • Быстрый: Одна из целей создания данного шаблонизатора - сделать его настолько быстрым, насколько это возможно. Для достижения максимальной скорости работы, Twig компилирует шаблоны в оптимизированный PHP код. Использование памяти по сравнению с обычным PHP кодом сведено к минимуму.