PHP - if 语句中的倒序
这个问题困扰了我很久,一直找不到答案...注意到它被 Zend 框架开发人员大量使用,
This is a question that is bugging me for a long time and can't find any answer... Noticed it's used quite a lot by Zend Framework Developers,
以下两个if"语句有什么区别?:
What is the difference between following 2 "if" statements? :
if (null === $this->user) { ... }
if ($this->user === null) { ... }
对我来说第一个看起来有点奇怪;]
To me the first one looks kinda odd ;]
感谢您的回答.
推荐答案
这与您的脚本的工作方式没有区别,它只是一个编码标准,一个建议
This is not a difference for the way your script works, it's just a coding standard, a recommendation
推荐使用这种方式的原因:
The reason why it is recommended to use it this way:
if (null == $this->user)
的事实是,如果你输入错误并写 = 而不是 == 你会得到一个错误,而
is the fact that if you mistype and write = instead of == you will get an error, while
($this->user = null)
代替
($this->user == null)
有效但会导致奇怪的错误(赋值和最终值被评估为 bool 而不是比较)
works but causes weird bugs (assignment and the final value is evaluated as bool instead of comparison)
我猜它只是作为一种习惯扩展到严格比较运算符 (===)
and I guess it just extended as a habit to the strict comparison operator (===)
更新:因为我发现即使在我发布答案 3 年后该线程上仍有一些活动,所以我想我会添加一些我忘记提及的内容.这种类型的符号称为 yoda conditions
,您可以在 this 上阅读有关它的更多信息例如维基百科页面.
Update: since I see that there's still some activity on this thread even 3 years after I posted the answer I figured I would add something I forgot to mention. This type of notation is known as yoda conditions
, you can read more about it on this wikipedia page for example.
相关文章