alc*_*ion 9 php zend-framework coding-style
这是一个困扰我很长时间的问题,无法找到任何答案......值得注意的是,Zend Framework Developers使用了很多,
以下2"if"语句之间有什么区别?:
if (null === $this->user) { ... }
if ($this->user === null) { ... }
Run Code Online (Sandbox Code Playgroud)
对我来说,第一个看起来有点奇怪;]
谢谢你的回答.
mis*_*shu 14
这不是您的脚本工作方式的差异,它只是一个编码标准,一个推荐
建议以这种方式使用它的原因:
if (null == $this->user)
Run Code Online (Sandbox Code Playgroud)
事实是,如果你输入错误并写入=而不是==,那么你将得到一个错误
($this->user = null)
Run Code Online (Sandbox Code Playgroud)
代替
($this->user == null)
Run Code Online (Sandbox Code Playgroud)
工作但导致奇怪的错误(赋值和最终值被评估为bool而不是比较)
我猜它只是作为一种习惯延伸到严格的比较运算符(===)
更新:因为我发现即使在我发布答案3年后,这个帖子上仍然有一些活动,我想我会添加一些我忘记提及的内容.这种表示法被称为yoda conditions,您可以在此维基百科页面上阅读更多相关信息.
这是撰写声明的好习惯if。考虑这段代码:
if (10 == $var) {
echo 'true';
} else {
echo 'false';
}
Run Code Online (Sandbox Code Playgroud)
如果您忘记了一个等号:
if (10 = $var) { }
Run Code Online (Sandbox Code Playgroud)
然后 PHP 将生成解析错误,因此您知道您错过了一个错误=并且可以修复它。但是这段代码:
if ($var = 10) { }
Run Code Online (Sandbox Code Playgroud)
将分配 10$var并始终评估为真实条件。无论 的内容是什么$var,上面的代码总是会回显“true”,并且很难找到这个错误。