Макеты
В нашем приложении мы используем шаблонизатор 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.
- Краткость язык PHP многословен и даже слишком многословен, когда нужно экранировать вывод данных
- Twig имеет более лаконичный синтаксис, который позволяет легко читать шаблоны
- Ориентированный на шаблоны синтаксис Twig имеет сокращения для многих общих паттернов, например, отображение текста по умолчанию, если вы перебираете пустой массив
- Полнофункциональный поддерживает все, что необходимо для использования шаблонов множественное наследование, блоки, автоматическое экранирование и многое другое
- Легок в изучении синтаксис прост в изучении и оптимален для верстальщиков, что позволяет им быстро выполнять свою работу.
Конечно, для PHP написано большое число шаблонизаторов. Но большинство из них написаны под PHP4 и не используют лучшие практики разработки:
- Расширяемость: Твиг это гибкий движок для любых ваших потребностей, даже самых сложных. Благодаря открытой архитектуре, вы можете определять новые языковые конструкции (тэги и фильтры) для создания своего собственного DSL.
- Юнит-тестирование: Твиг полностью покрыт тестами. Библиотека стабильна и готова к использованию в больших проектах.
- Документация: Tвиг полностью документирован, вся документация доступна на сайте, и, конечно, имеет полное описание API.
- Безопасность: В отношении безопасности, имеется несколько совершенно уникальных особенностей:
- Автоматическое экранирование вывода: Для безопасного вывода данных, вы можете включить экранирование как глобально, так и для отдельных блоков.
- Песочница: Twig позволяет использовать для любого шаблона "песочницу", где пользователи имеют ограниченный набор тэгов, фильтров и методов объектов, определенных разработчиком. Режим "песочницы" может быть включен как глобально, так и локально, для определенных шаблонов
- Чистые сообщения об ошибках: Каждый раз, когда у вас возникают синтаксические ошибки в шаблоне, шаблонизатор выводит сообщение о имени файла с ошибкой и номере строки, которая ее вызвала. Это очень упрощает отладку.
- Быстрый: Одна из целей создания данного шаблонизатора - сделать его настолько быстрым, насколько это возможно. Для достижения максимальной скорости работы, Twig компилирует шаблоны в оптимизированный PHP код. Использование памяти по сравнению с обычным PHP кодом сведено к минимуму.