如果我使用Twig表达式,例如:
{% if a and function(a) %}
如果a
是假值,Twig是否仍会评估function(a)
,或者表达式在不评估第二部分的情况下将评估为false
?同样适用于or
。
如果我使用Twig表达式,例如:
{% if a and function(a) %}
如果a
是假值,Twig是否仍会评估function(a)
,或者表达式在不评估第二部分的情况下将评估为false
?同样适用于or
。
简而言之:Twig 的逻辑运算符在 'and' 表达式的第一个部分为 falsey 时不会评估第二个部分,同样地,在 'or' 中如果第一个部分为 truthy,则不会评估后面的部分。
正如zerkms所指出的,可以通过使用 die 来测试。
例如:
{% if water_is_dry and die('water_is_wet') %}
由于第一个表达式为null,它是falsy值,所以不会死亡。
然而:
{% if water_is_dry or die('water_is_wet') %}
会死的。
请注意,这只有在将die作为Twig实例的函数添加时才起作用,例如:
$twig->addFunction(new Twig_SimpleFunction('die', 'die'));