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

标签 php syntax content-management-system conditional

我一直在关注一个关于 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/

相关文章:

c# - Orchard部署问题404错误

syntax - 如何将自定义结构放入堆栈然后能够访问所有字段?

javascript - 如何让这些嵌套引号在 Javascript 中工作?

haskell - 类型类声明后的奇怪符号是什么意思

python - 如何使用 django-cms Python api 创建页面?

magento - Opencart,从产品的规范 URL 中删除类别字符串

php - 如何使用 WHERE 函数获取数据?

php - 如何以 www-data 用户身份终止进程

php - mysql 'likes' 结构表

php - 更改 Laravel migrate 命令的 MySQL 连接