Так сложилось исторически, то PHP на первых порах своего существования выполнял роль языка-шаблонизатора. Иногда в дискуссиях в вопросе «лучшего шаблонизатора» можно заметить незатейливый ответ «сам PHP». По всей видимости устоялось такое мнение с тех времён и по сей день, однако данный язык развивался значительным образом и перерос в нечто глобально большее. По этой причине сама концепция в виду сложности современных проектов перетерпела значительные изменения. Масштабные решения как правило разрабатываются и сопровождаются целой группой людей, по этой причине для оптимизации взаимодействия между специалистами разного плана очевидно была придумана данная концепция.
По сегодняшним нормам стало важно разделять логику и представление, это в свою очередь становится эффективным для сотрудничества backend-разработчиков, а также frontend-а. Благодаря этому разделению frontend-разработчики (или по-другому верстальщики), используя синтаксис принятого шаблонизатора могут редактировать внешний вид web-приложения, не внося тем самым коррективы в глобальную логику приложения. В итоге совместная работа складывается таким образом, что backend-разработчик подготавливает переменные для вывода, frontend-разработчик делает вывод их в шаблоне добавляя их в нужных местах HTML-разметки.
На сегодняшний день существуют множество разновидностей шаблонизаторов, которые написаны на PHP, какой из них использовать уже решать вам. Приведу список наиболее известных на мой взгляд, те что активно поддерживаются сообществом PHP, и признаны в широких кругах разработчиков.
Первые дни существования данного шаблонизатора приходятся на 2011 г., данный шаблонизатор используется в PHP-фреймворке Lavarel, которые с каждым днём всё больше набирает свою популярность. Бытует мнение что из-за небольшого списка регулярных выражений для замены, данный шаблонизатор обладает приличной скоростью работы.
Ссылка на исходники Laravel в GitHub: https://github.com/laravel/laravel
Статистика laravel на GitHub:
Подписчиков | Звёзд | Форки |
4,620 | 45,912 | 14,207 |
Официальная документация Blade изложена в виде обзоров, более подробная информация о работе с данным шаблонизатором находится на сторонних ресурсах. Имеет довольно простой синтаксис, разрешает использование PHP внутри шаблонов, а также есть поддержка наследования шаблонов, секций, и безопасный ввод содержимого.
Данный шаблонизатор доступен для неограниченного количества языков, PHP не стал исключением. Отличительной чертой его так же является минимум логики для работы, это замена, цикл foreach, проверка на null.
Ссылка на исходники Mustache в GitHub: https://github.com/janl/mustache.js/
Статистика Mustache на GitHub:
Подписчиков | Звёзд | Форки |
425 | 12,439 | 2,230 |
Как уже отмечалось выше шаблоны Mustache содержать логику не могут, по этой причине, логику, связанную с представлением, приходится реализовывать на стороне backend-а. В виду небольших его возможностей необходимости в большой и подробной документации нет. Из всего этого вытекает довольно приличная скорость его работы.
Не смотря на то что данный шаблонизатор существует уже довольно давно (~от начала 2000 г), он не теряет свою популярность среди разработчиков. Проект продолжает развиваться и поддерживается разработчиками.
Ссылка на исходники Smarty на GitHub: https://github.com/smarty-php/smarty
Статистика Smarty на GitHub:
Подписчиков | Звёзд | Форки |
189 | 1,387 | 452 |
Документация у Smarty довольно изобильна, и хорошо структурирована, так же это касается и самого функционала, он довольно большой и есть возможности его расширения. Что касается синтаксиса, то он довольно прост для восприятия, что так же делает его привлекательным среди разработчиков.
Универсальный шаблонизатор и может быть внедрён практически в любой проект, вне зависимости от фреймворка. В своё время был внедрён в фреймворк Symfony в систему представлений, благодаря чему обрёл свою популярность.
Ссылка на исходники Twig на GitHub: https://github.com/twigphp/Twig
Статистика Twig на GitHub:
Подписчиков | Звёзд | Форки |
259 | 5,365 | 998 |
Что касается twig то здесь довольно большой набор функций, фильтров, тестов и расширяемых макросов. Известно, что Twig используется в Drupal 8, довольно изобильная документация, так же ведётся активная разработка на GitHub.
Этот шаблонизатор используется в фреймворке Phalcon, который в свою очередь написан на C, и распространяется в виде PHP-расширения. Всё это накладывает ограничение на использование данного шаблонизатора на других фреймворках. Однако, как показывает практика популярности данному шаблонизатору так же предостаточно.
Ссылка на исходники Volt на GitHub: https://github.com/phalcon/cphalcon
Статистика Phalcon на GitHub:
Подписчиков | Звёзд | Форки |
755 | 9,182 | 1,703 |
Привлекательной особенностью является высокая производительность фреймворка, т.к. он написан на C, а также имеет вдвое большую производительность при включении механизма кэширования. Volt как и в предыдущем шаблонизаторе имеет достаточно богатый функционал для собственных фильтров, макросов, и расширений движка. Хорошо организованная документация, ведется активная разработка как Volt так и Phalcon в целом на GitHub.