Twig的逻辑运算符是否评估这两个表达式?

ili*_*ark 2 php symfony twig

如果我使用Twig表达式,如:

{% if a and function(a) %}
Run Code Online (Sandbox Code Playgroud)

由于a是假的,Twig仍在评估function(a),或者表达式会在false不评估第二部分的情况下进行评估吗?同样地or.

ili*_*ark 5

tl; dr:如果第一部分是假的,那么Twig的逻辑运算符不会评估'和'表达式的第二部分,如果第一部分是真实的,则同样使用'或'.

正如zerkms指出的,这可以通过使用die来测试.

例如:

{% if water_is_dry and die('water_is_wet') %}
Run Code Online (Sandbox Code Playgroud)

不会死,因为第一个表达式是null,是假的.

鉴于:

{% if water_is_dry or die('water_is_wet') %}
Run Code Online (Sandbox Code Playgroud)

会死.

请注意,只有将die作为函数添加到Twig实例时才有效,如下所示:

$twig->addFunction(new Twig_SimpleFunction('die', 'die'));
Run Code Online (Sandbox Code Playgroud)

  • @zerkms,我发现这个问题和新答案很有用.也许你应该在这里删除你的减号. (2认同)