6 лучших шаблонизаторов на PHP

Для чего вообще нужны движки шаблонов, когда можно использовать сам PHP в качестве шаблонизатора? Да, это возможно. Но зачем, если есть более надежные и доступные варианты.

Например, для отображения значения переменной в PHP вы бы написали:

<? php echo $var; ?>

Но то же самое, только с помощью более короткого кода, можно сделать Twig и Django:

{{ var }}

PHP лучше всего подходит для бизнес-логики. Его нельзя смешивать с уровнем представления.

Бизнес-логика приложения определяет, как данные создаются, отображаются, сохраняются и изменяются. Уровень представления определяет, как данные будут предоставлены пользователю в определенном формате, таком как HTML, JSON, XML или другом.

Лично я не рассматриваю PHP как язык шаблонов, потому что пока не вижу в нем изменений, которые бы расширили эту технологию и позволили использовать ее в качестве шаблонизатора.

Например, Django несколько лет назад ввел наследование шаблонов как способ имитации классов, только для шаблонов:

{% extends "base.html" %}

{% block header%} {% endblock}
{% block body%} {% endblock}
{% block footer%} {% endblock}

Это настолько эффективное решение, что многие движки шаблонов теперь поддерживают данную функцию по умолчанию.

Мы продолжаем разрабатывать сложные веб-приложения, поэтому становится все более важно разделять back-end и front-end логику, чтобы авторы и сторонние разработчики могли сотрудничать в рамках работы над компонентами сайта, не наступая друг другу на пятки.

Режим песочницы (обратите внимание)

Он необходим, когда вы разрешаете пользователям редактировать шаблоны (например, когда вебмастерам разрешено редактировать некоторые back-end шаблоны). Это не абсолютное требование, в каждом конкретном случае нужно принимать решение индивидуально. Установка для шаблона режима песочницы означает возможность ограничения того, что в нем можно сделать.

Например, необходимо иметь возможность установить ограничения для методов / функций, которые можно вызывать, тегов, которые можно использовать, и многого другого. Эти функции отсутствуют в PHP.

Альтернативные движки шаблонов PHP

Я нашел другие движки, которые разработаны специально для шаблонов. Но не все они одинаково хороши. Я прочитал много статей, сравнил найденные движки по их основным функциям и в итоге составил топ-6 наиболее широко используемых движков.

1. Twig

PHP-шаблонизатор Twig был написан Армином Ронахером из Jinja. Это один из популярных движков шаблонов. Несмотря на то, что Twig один из наиболее полнофункциональных PHP-шаблонов, он также и самый быстрый:

Некоторые из основных функций Twig:

  • Встроенное наследование шаблонов (шаблоны компилируются как классы).
  • Полностью автоматизированное экранирование (без связанных с этим временных затрат, происходящих в процессе компиляции).
  • Безопасный режим песочницы, который позволяет использовать Twig в качестве языка шаблонов для приложений, в которых пользователи могут изменять дизайн шаблона.
  • Отличная расширяемость: вы переопределяете все, даже основные функции, добавляя собственные теги и фильтры в качестве расширения. Перед компиляцией также можно манипулировать AST (абстрактным деревом синтаксиса). Используя эти возможности, даже можно создать собственный DSL (Domain Specific Language), предназначенный для вашего приложения.
  • Шаблонно-ориентированный синтаксис.
  • Функциональный – поддерживает множественное наследование, блоки, автоматическое выключение вывода и многое другое.
  • Понятные сообщения об ошибках.

2. Smarty

В Smarty большое внимание уделяется шаблону, и меньшее коду. Он использует простой синтаксис {tag}, который разработан специально для представлений:

Smarty предоставляет крутой учебный курс, с которого можно начать изучение данного движка. Он компилирует копии шаблонов в виде скриптов PHP. Благодаря чему вы можете использовать преимущества синтаксиса тегов шаблонов и скорости PHP.

Компиляция выполняется один раз, когда шаблон вызывается впервые. Затем скомпилированные версии используются в дальнейшем. Таким образом, Smarty позаботился о том, чтобы дизайнер мог просто редактировать шаблоны, и ему не нужно было управлять скомпилированными версиями.

Smarty также использует концепцию песочницы.

В Smarty 3 было введено наследование. Используя наследование, можно легко управлять блоками.

3. mustache

Движок расширяет теги в шаблоне, используя значения, предоставленные в хеше или объекте. Мы называем это “logic-less”, потому что в нем нет операторов if, условий else или циклов for. Вместо этого есть только теги.

4. Blade

Простой, но мощный движок шаблонов Laravel. Но это не означает, что вы не можете использовать его с другими фреймворками.

Blade — это автономный компонент, и его можно использовать  отдельно. Движок был выпущен в 2011 году. На сегодняшний день является одним из наиболее часто используемых.

В отличие от других популярных шаблонизаторов, Blade не ограничивается использованием простого PHP-кода в представлениях. Фактически, все представления Blade компилируются в простой PHP-код и хранятся в кэше, пока не будут изменены. Это означает, что Blade практически не добавляет служебные данные для вашего приложения.

Но основная проблема Blade — недостаточно обширная документация. В ней отсутствует много важных аспектов.

5. Volt

PHP-шаблонизатор Volt — это быстрый и удобный язык шаблонов, написанный на языке C для PHP. Volt тесно интегрирован с другими компонентами Phalcon. Но при этом его можно использовать в своих приложениях в качестве автономного компонента.

Главный недостаток Volt заключается в том, что его нельзя полностью отделить от Phalcon. Поэтому, если хотите использовать Volt с другими фреймворками, вам это не удастся. Вы можете вернуться к использованию движка шаблонов Twig, который, является самым близким к Volt языком, но в то же время полностью автономным.

6. Dwoo

Как и Twig и Smarty, Dwoo поддерживает наследование, что дает возможность легко переопределять значения шаблонов по умолчанию. Но, к сожалению, у Dwoo нет функции песочницы, и его ядро является ​​недостаточно гибким.

Ключевые особенности:

  • Быстрее, чем Smarty.
  • Гибкое создание плагинов.
  • Совместимость с синтаксисом Smarty с несколькими дополнениями и ярлыками для ускорения написания шаблонов.

Заключение

Twig — это движок шаблонов, который можно легко адаптировать. Он многофункциональный, легко настраиваемый и прекрасно задокументирован. И если вы знаете другие шаблонизаторы PHP, то сможете легко начать работу с Twig, потому что его синтаксис похож на другие движки.

Перевод статьи «6 Best Template Engines in PHP [updated]» дружной командой проекта Сайтостроение от А до Я.