次のようなTwig式を使用する場合:
{% if a and function(a) %}
偽りでa
あるにもかかわらず、Twigはまだ評価function(a)
しますか、それとも式false
は2番目の部分を評価せずに評価しますか?同様にor
。
tl; dr:Twigの論理演算子は、最初の部分がfalseの場合、'および'式の2番目の部分を評価しません。同様に、最初の部分がtrueの場合は'または'を評価します。
zerkmsが指摘しているように、これはダイを使用してテストできます。
例えば:
{% if water_is_dry and die('water_is_wet') %}
nullである最初の式は偽であるため、死ぬことはありません。
一方:
{% if water_is_dry or die('water_is_wet') %}
死んでしまいます。
これは、次のように、関数としてDieをTwigインスタンスに追加した場合にのみ機能することに注意してください。
$twig->addFunction(new Twig_SimpleFunction('die', 'die'));