为什么有些编码指南会改变PHP中条件的顺序if/else?

shr*_*ing 3 php coding-style

一些编码指南规定您应该在条件结束时放置您正在测试的变量:

// Incorrect
if($isSomething === FALSE) { // Do something }

// Correct
if(FALSE === $isSomething) { // Do something }
Run Code Online (Sandbox Code Playgroud)

我知道有些程序员习惯在这样的条件下使变量初始化:

if($results = $db->getResults() { // Do something if results exist }
Run Code Online (Sandbox Code Playgroud)

所以,我能想象到的具有这种反直觉的规则的唯一原因是为了防止错误reinitalisation万一你不小心只使用一个等号(=),而不是两个PHP.

还有其他原因吗?

fra*_*ity 5

在您想要比较的情况下,您不能意外地分配值.这使得查找小错误变得更加容易.

if (FALSE = $isSomething)会抛出一个错误,因为你无法重新分配常量,因为它们
if ($isSomething = FALSE)总会返回true,你可能很长时间都不会注意到这个错误.