a Sensio Labs Product

Гибкий, быстрый и безопасный
шаблонизатор для PHP

Вышел Twig 0.9.7

Всего месяц назад вышел Twig 0.9.6, а сегодня уже доступен Twig 0.9.7

Как всегда документация обновлена и лог правок содержит все сделанные изменения. В этом посте упомянуты только основные изменения.

Обратная несовместимость

Тэг set

Синтаксис тэга set изменен для улучшения читабельности

{# до 0.9.7 #}

{% set title as "Title" %}

{# начиная с 0.9.7 #}

{% set title = "Title" %}

Тэг include

Удален атрибут sandboxed тэга include, так как введен новый тэг – sandbox:

{# до 0.9.7 #}

{% include "foo.twig" sandboxed %}

{# начиная с 0.9.7 #}

{% sandbox %}
    {% include "foo.twig" %}
{% endsandbox %}

Тэг include также принимает в качестве аргумента объект класса Twig_Template.

Узлы

Подсистема узлов была подвергнута рефакторингу. Если у вас есть свои собственные тэги, вам необходимо обновить их, используя новый API:

  • Класс Twig_NodeList удален. Если ваш тэг наследует его, просто заменить базовый класс на Twig_Node и удалить методы getNodes() и setNodes().

  • Метод __toString() теперь генерируется автоматически базовым классом Twig_Node. Т.е. вы можете безбоязненно удалить свою реализацию этого метода.

  • Основные изменения касаются конструктора (подробнее можно почитать в описании Twig_Node)

Новые особенности

Динамическое и условное наследование

Уже описано здесь

Тэг sandbox

Как уже упоминалось, доступен новый тэг sandbox:

{% sandbox %}
    {% include "foo.twig" %}
    {% include "bar.twig" %}
{% endsandbox %}

Параметр strict_variables

По умолчанию Twig просто игнорирует неопределенные переменные. Это хорошо для рабочего проекта, но вызывает сложности при отладке. Параметр strict_variables управляет этим поведением Twig, и по умолчанию он отключен. Если же присвоить ему true, неопределенные переменные будут вызывать исключения.

Создавать новые тэги проще

Когда разработчику надо создать новый тэг, ему приходиться разобраться со многими понятиями: токены, потоки токенов, парсеры, компиляторы. Конечно, он может просто скопировать существующий код, но это не очень хорошо. В Twig 0.9.7 добавлен новый высокоуровневый API, облегчающий создание новых тэгов. Это API экспериментальное и может в будущем измениться, кроме того, документация пока не готова.

Как обновить

До обновления внимательно прочитайте топик, так как этот релиз может сломать ваш код. Затем действуйте как обычно:

  • Установите новую версию (через PEAR, SVN, Git или скачав новый архив);

  • Удалите закэшированные шаблоны;

  • Проверьте.

Добавить комментарий