可能重复:
PHP -在if语句颠倒顺序
检查空-什么样的顺序?
检查Zend框架发现他们做的所有变量checkings逆转方式:
public function setBootstrap($path, $class = null) {
if (null === $class) { // instead of if($class === null)
$class = 'Bootstrap';
}
什么是这样做的原因是什么?
这也适用于Java和C ++编程?
有些人认为这可以帮助他们避免编写一个=
(而不是平等的比较的分配)
我认为,这样做的好处是比可读性的损失要小得多(因此可维护性!)
谁不测试自己的代码的人可能依靠这种伎俩。 而要回答你的问题,是的,它是适合谁在C获得其语法大部分语言 - 我的意思是合适的,不建议使用。
这种风格被称为尤达条件 。
基本上,它具有相同的行为作为一般( $variable === value
)的风格,但是有一个好处:
编译器会引发错误的情况下,你写=
,而不是==
或者===
错误。 正如你不能重新分配常数(本例中的null
值),开发商会立即识别错误由于编译器错误/警告,并因此被免除消费的bug搜索的时间。
所以,下面一行将是有效的,但它不会显示(大部分时间)预期的行为:
if ( $var = null ) { echo 'test'; }
虽然这里显示的错误:
if ( null = $var ) { echo 'test'; }
一个主要缺点,但是,是可读性与这种风格的损失。 但是,这取决于代码的阅读器和其他一些编码风格的指导方针。
这是一个尤达条件,我不知道任何好处,除非你不能将该值赋给变量当你不小心写例如
if( $foo = "bar" )
这里更多的例子,一个链接:
http://united-coders.com/christian-harms/what-are-yoda-conditions
在这种情况下比较发生在帐户值和类型的值的。 这是一个严格的比较。
例如,这代码:
if (null == "") {
echo "null";
}
除非严格比较来比较实际值和值本身的类型将打印“空”至于PHP对待“”,0,空,假等同空值。
第二件事情就是空=== $类是用来是因为你不能赋值为null。 虽然可以成功地犯错,并指定$类= NULL。
文章来源: What's the meaning of the reverse entry (null === $value) when checking the value of the variable? [duplicate]