Всего месяц назад вышел 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 или скачав новый архив);
Удалите закэшированные шаблоны;
Проверьте.