【发布时间】:2016-08-05 01:07:00
【问题描述】:
在浏览我正在贡献的项目的源代码时,我发现这行代码:
$id or $id = $this->id;
它似乎工作正常,这有点像 PHP 5 中缺少空合并运算符/处理程序的解决方法。'or' 关键字能够执行此类代码。但是,我想知道这是否是 PHP 中一个好的编程习惯。你怎么看?编写这样的($x or $x = $y) 代码是个好主意吗?
【问题讨论】:
-
我个人认为它的可读性不是很高。我也不确定它如何处理 $id 为假但不为空的情况。不过现在 PHP 7 已经发布了,希望这些黑客行为不再那么常见。
-
这个问题似乎更适合出现在以下位置的内容类型:programmers.stackexchange.com
-
这告诉我,NO
Notice: Undefined variable: id -
我不认为这是一种 baaaaaaaad 的做法。我的意思是,javascript 使用了很多(好吧,这里不是最好的比较,哈哈)但是 C# 现在有一个空运算符,可以像
var data = Obj?.Property?.Method()这样使用。or声明可能会被重写为$id = isset($id) ? $id : $this->id,所以我认为它是一个简短的版本...... -
@AbraCadaver:实际上并没有通知错误,因为此代码来自一个接受 $id 作为参数且默认值为 null 的类方法:public function xml($id = null)。跨度>
标签: php if-statement null-check