PHP - if 语句中的倒序

2021-12-29 00:00:00 coding-style php zend-framework

这个问题困扰了我很久,一直找不到答案...注意到它被 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.

相关文章