什么是反向条目(空=== $值)的含义检查变量的值是什么时候? [重复](What's

2019-06-25 10:49发布

可能重复:
PHP -在if语句颠倒顺序
检查空-什么样的顺序?

检查Zend框架发现他们做的所有变量checkings逆转方式:

public function setBootstrap($path, $class = null) {

   if (null === $class) {    // instead of if($class === null)
      $class = 'Bootstrap';
   }

什么是这样做的原因是什么?

这也适用于Java和C ++编程?

Answer 1:

有些人认为这可以帮助他们避免编写一个= (而不是平等的比较的分配)

我认为,这样做的好处是比可读性的损失要小得多(因此可维护性!)

谁不测试自己的代码的人可能依靠这种伎俩。 而要回答你的问题,是的,它是适合谁在C获得其语法大部分语言 - 我的意思是合适的,不建议使用。



Answer 2:

这种风格被称为尤达条件

基本上,它具有相同的行为作为一般( $variable === value )的风格,但是有一个好处:

编译器会引发错误的情况下,你写= ,而不是==或者===错误。 正如你不能重新分配常数(本例中的null值),开发商会立即识别错误由于编译器错误/警告,并因此被免除消费的bug搜索的时间。

所以,下面一行将是有效的,但它不会显示(大部分时间)预期的行为:

if ( $var = null ) { echo 'test'; }

虽然这里显示的错误:

if ( null = $var ) { echo 'test'; }

一个主要缺点,但是,是可读性与这种风格的损失。 但是,这取决于代码的阅读器和其他一些编码风格的指导方针。



Answer 3:

这是一个尤达条件,我不知道任何好处,除非你不能将该值赋给变量当你不小心写例如

if( $foo = "bar" )


这里更多的例子,一个链接:

http://united-coders.com/christian-harms/what-are-yoda-conditions



Answer 4:

在这种情况下比较发生在帐户值和类型的值的。 这是一个严格的比较。

例如,这代码:

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]