通过PHP中的AND运算符进行短路评估

Jan*_*aek 6 php and-operator

我正在努力提高我的编码忍者h4x技能,我目前正在寻找不同的框架,我找到了很难谷歌的示例代码.

我正在研究项目中使用的FUEL框架.

我不明白的样本是

$data and $this->template->set_global($data);
Run Code Online (Sandbox Code Playgroud)

什么是关键字这行代码在做什么?它被用在框架中的许多地方,它是我发现的第一个使用它的地方.

Mic*_*ski 13

这是一种" 短路评估 ".该and/&&意味着两侧对比必须求TRUE.

and/&&评估左侧的项目TRUE/FALSE以及是否TRUE执行和评估右侧的项目.如果左项是FALSE,则执行暂停,不评估右侧.

$data = FALSE;
// $this->template->set_global($data) doesn't get evaluated!
$data and $this->template->set_global($data);

$data = TRUE;
// $this->template->set_global($data) gets evaluated
$data and $this->template->set_global($data);
Run Code Online (Sandbox Code Playgroud)

注意这些不必是实际的布尔值TRUE/FALSE,但根据PHP的评估规则也可以是truthy/falsy值.有关评估规则的更多信息,请参阅PHP布尔文档.