我正在努力在 Wordpress 中制作助行器。我看到了一些示例代码,其中一行具有以下语法:
!empty($item->attr_title)
and $attributes .= ' title="'.esc_attr($item->attr_title).'"';
这是做什么的?我假设如果对象属性不为空,它会附加标题字符串,但我不确定“和”字在这里的作用。
这是以下的简写:
if (!empty($item->attr_title)) {
$attributes .= ' title="'.esc_attr($item->attr_title).'"';
}
PHP 对布尔表达式进行短路评估,也就是说,在结果确定之前,只评估尽可能多的项。
true and something()
将评估something()
(完整的表达式仍然可以评估为假),而
false and something()
任期结束后将停止评估false
。
这是“短路评估”的一个例子。
这基本上是一种简写方式:
if(!empty($item->attr_title)) {
$attributes .= ...
}
它之所以有效,是因为如果第一项为假,布尔运算将and
停止评估。如果它是真实的,则评估右侧。由于我们对返回值不感兴趣,这与 if 语句的效果相同。
关键字(在这种and
情况下与 相同&&
)检查其左侧和右侧的条件是否为真。有一个优化,如果左手条件为假,右手条件将不会被检查或执行。因此,您的代码将与以下内容相同:
if(!empty($item->attr_title) {
$attributes .= ' title="'.esc_attr($item->attr_title).'"';
}