Логические операторы Twig оценивают оба выражения?

Если я использую выражение Twig, например:

{% if a and function(a) %} 

с ложью, твиг все еще оценивает function(a) , или выражение будет оцениваться как false не оценивая вторую часть? Аналогично с or .

tl; dr: логические операторы Twig не оценивают вторую часть выражения «и», если первая часть ложна, аналогично «или», если первая часть является правдивой.

Как указывалось zerkms , это можно проверить , используя die.

Например:

 {% if water_is_dry and die('water_is_wet') %} 

не умрет, поскольку первое выражение, являющееся нулевым, ложно.

В то время как:

 {% if water_is_dry or die('water_is_wet') %} 

умрет.

Обратите внимание, что это работает, только если вы добавите функцию die в качестве функции для вашего экземпляра Twig, например:

 $twig->addFunction(new Twig_SimpleFunction('die', 'die'));