【发布时间】:2015-07-04 08:38:12
【问题描述】:
我一直在关注一个关于 PHP 框架的视频系列,我遇到了一个奇怪的结构。我只是想知道它叫什么,这样我就可以多读一些了。在视频中,演讲者给出了这个代码
public function edit($id = NULL)
{
$id == NULL || $this->data['user'] = $this->user_m->get($id);
...
}
他说,如果调用者没有传递id,那么$id就会被设置为null,如果传递了一个$id,就会从数据库中取出用户并保存在数据数组中。
问题是,这是一个条件语句,但它不在 if 或 while 或类似的东西中。我以前从未见过。我搜索了内联或循环/if语句之外的条件,奇怪的语法没有成功。就像我说的那样,我想了解更多关于它的信息,并了解它是一般的 PHP 功能还是特定于框架的功能。
谢谢。
【问题讨论】:
-
这是一个三元运算符。仅此而已,右手评测虽然不是那么受欢迎,但我个人不喜欢它。据我所知,它与:
$id !== NULL && $this->data['user'] = $this->user_m->get($id);完全相同,或者更易读:$this->data['user'] = $id == NULL ? $this->user_m->get($id) : $this->data['user'];简而言之,它基本上说“如果 id 不为空(或者更准确地说,如果 $id == null 是b>falsey),然后将 this->data['user'] 设置为 this->user_m->get($id),否则保持 $id 为空并继续。 -
@b0s3:不,只是猜测,我已经习惯了这些,唯一困扰我的是传递给函数的参数,我假设它是 $id = null 而不是 id == null , 否则它甚至不应该编译,对吧?
-
贴出的源码中没有使用三元运算符...
-
不,现在不涉及三元运算符... OR 显然是二元运算符。
-
@briosheje:一元 = 单个参数,二元 = 两个参数,三元 = 三个参数...我的陈述没有任何矛盾。
标签: php syntax content-management-system conditional