Вступление#

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

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

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

  • Быстро: Twig компилирует шаблоны в простой оптимизированный PHP-код. Накладные расходы по сравнению с обычным кодом PHP были сведены к минимуму.

  • Безопасность: Twig имеет режим песочницы для оценки ненадежного кода шаблона. Это позволяет использовать Twig в качестве языка шаблонов для приложений, где пользователи могут изменять дизайн шаблона.

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

Twig используется многими проектами с открытым исходным кодом, такими как Symfony, Drupal8, eZPublish, phpBB, Matomo, OroCRM; и многие фреймворки также поддерживают его, например Slim, Yii, Laravel и Codeigniter — и это лишь некоторые из них.

Видеоуроки

Хотите учиться на видеоуроках? Ознакомьтесь с учебным пособием по Twig!

Совместимость#

Для работы Twig 3.x требуется как минимум PHP 7.2.5.

Установка#

Рекомендуемый способ установки Twig через Composer:

composer require "twig/twig:^3.0"

Базовое использование API#

В этом разделе дается краткое введение в PHP API для Twig:

require_once '/path/to/vendor/autoload.php';

$loader = new \Twig\Loader\ArrayLoader([
    'index' => 'Hello {{ name }}!',
]);
$twig = new \Twig\Environment($loader);

echo $twig->render('index', ['name' => 'Fabien']);

Twig использует загрузчик (\Twig\Loader\ArrayLoader) для поиска шаблонов и окружение (\Twig\Environment) для хранения своей конфигурации.

Метод render() загружает шаблон, переданный в качестве первого аргумента и отображает его с переменными, переданными в качестве второго аргумента.

Поскольку шаблоны обычно хранятся в файловой системе Twig также поставляется с загрузчиком файловой системы:

$loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
$twig = new \Twig\Environment($loader, [
    'cache' => '/path/to/compilation_cache',
]);

echo $twig->render('index.html', ['name' => 'Fabien']);