我一直在关注一个关于 PHP 框架的视频系列,我遇到了一个奇怪的结构。我只是想知道它叫什么,这样我就可以多读一些了。在视频中,演讲者给出了这个代码
public function edit($id = NULL)
{
$id == NULL || $this->data['user'] = $this->user_m->get($id);
...
}
他说,如果调用者没有传递 id,则 $id 将设置为 null,如果传递了 $id,将从数据库中检索用户并将其保存在数据数组中。
事实是,这是一个条件语句,但它不在 if 或 while 之类的语句中。我以前从没见过。我搜索了内联或循环/if 语句外的条件,奇怪的语法但没有成功。就像我说的,我想阅读更多关于它的信息,看看它是一个通用的 PHP 功能还是特定于框架的。
谢谢。
最佳答案
sytnax 称为“短路评估”,是大多数编程语言中使用的优化技术。 ||
的右表达式仅在左表达式为假时才被计算,因为 - 否则 - 结果不依赖于右表达式的值(作为 的右表达式&&
仅在左侧为真时才计算)。
您可以将示例重写为 ($id == NULL) || ($this->data['user'] = $this->user_m->get($id));
让它更清楚。仅当 $id
不是 NULL
时才评估赋值表达式。
但是,这行代码是难以维护的代码的完美示例,因为您需要花很多时间思考它的作用...:)
关于PHP 奇怪的语法 - 它叫什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31218693/