这是窃听我很长一段时间,找不到任何答案的问题...注意的它是由Zend Framework的开发人员使用了很多,
是什么“如果”语句后面2有什么区别? :
if (null === $this->user) { ... }
if ($this->user === null) { ... }
对我来说,第一个看起来有点古怪]
感谢您的回答。
这是窃听我很长一段时间,找不到任何答案的问题...注意的它是由Zend Framework的开发人员使用了很多,
是什么“如果”语句后面2有什么区别? :
if (null === $this->user) { ... }
if ($this->user === null) { ... }
对我来说,第一个看起来有点古怪]
感谢您的回答。
这不是你的脚本工作方式的差异,它只是一个编码标准,推荐
为什么我们建议之所以用这种方式:
if (null == $this->user)
是事实,如果你输错和=的写入,而不是==你会得到一个错误,而
($this->user = null)
代替
($this->user == null)
作品,但会导致莫名其妙的错误(分配和最终值被评估为布尔而不是比较)
我猜它只是扩展为一个习惯,严格的比较操作符(===)
更新 :因为我看到有仍然即使3年后我贴我想我会添加一些东西我忘了说了答案这个线程的一些活动。 这种类型的符号被称为yoda conditions
,你可以阅读更多关于它在这个维基百科页面的例子。
这是写一个很好的做法if
语句。 考虑以下代码:
if (10 == $var) {
echo 'true';
} else {
echo 'false';
}
如果你忘了一个等号:
if (10 = $var) { }
然后PHP会产生解析错误,所以你知道你错过了=
你可以解决它。 但是,这样的代码:
if ($var = 10) { }
将分配10至$var
和结果始终为true的条件。 无论内容$var
,上面的代码将永远回响“真”和它的很难找到这个bug。
这些被称为尤达条件。
我们的想法是,如果你先放值(如假,空,真或任何短),对于一个人扫描的发言,并迅速地了解病情的意图更容易。
此外,什么秘术说:)
有为了比较值时,没有任何区别。
这可能是有人来读或写这样的代码更容易,但对我来说是一样从右至左书写。
在比较,我觉得元件的这种顺序是为了防止在if语句意外分配。
结果将是相同的,但是,第二个是合乎逻辑的。 你要检查,如果变量为空,如果不空是变量...周围此处描述的其他方式这样做的原因是: http://umumble.com/blogs/Programming/321/
如果你不小心写:
if (null = $this->user) { ... }
你会得到一个语法错误。
如果你不小心写:
if ($this->user = null) { ... }
你会寻找了很长时间的一个原因的应用程序的奇怪行为。