PHP奇怪的语法 - 它叫什么?

Set*_*011 5 php syntax conditional content-management-system

我一直在关注一个关于PHP框架的视频系列,我遇到了一个奇怪的结构.我只是想知道它叫什么,所以我可以再读一遍.在视频中,扬声器提供此代码

public function edit($id = NULL)
{
   $id == NULL || $this->data['user'] = $this->user_m->get($id);
   ...
}
Run Code Online (Sandbox Code Playgroud)

他说,如果调用者没有传递id,那么$ id将设置为null,如果传递了$ id,则将从数据库中检索用户并将其保存在数据数组中.

事实是,这是一个条件陈述,但它不在if或while或类似的东西里面.我以前从未见过这个.我搜索了内联或在循环/ if语句之外的条件,奇怪的语法没有成功.就像我说的,我想了解更多关于它的信息,并找出它是一般的PHP特性还是特定于框架的.

谢谢.

Seb*_*Seb 6

sytnax被称为"短路评估",是大多数编程语言中使用的优化技术.||仅当左表达式为假时才评估a 的正确表达式,因为 - 否则 - 结果不依赖于右表达式的值(因为&&仅当左侧表达式为真时才评估a 的右表达式).

您可以重写您的示例($id == NULL) || ($this->data['user'] = $this->user_m->get($id));以使其更清晰.仅评估赋值表达式,否则$idNULL.

但是,这行代码是一个很难维护的代码的完美示例,因为你需要花费很多时间来思考它的作用...... :)