检查变量的值时,反向条目(null === $ value)的含义是什么?

Gre*_*een 4 php if-statement isnull

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

检查Zend Framework发现他们以相反的方式执行所有变量检查:

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

   if (null === $class) {    // instead of if($class === null)
      $class = 'Bootstrap';
   }
Run Code Online (Sandbox Code Playgroud)

这样做的原因是什么?

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

Wal*_*oss 7

有些人认为这有助于他们避免写一个单一的=(一个作业而不是相等的比较)

我相信这样做的好处远远小于可读性的损失(因此可维护性!)

不测试代码的人可能会依赖这种技巧.并且回答你的问题,是的,它适用于从C语言中获取语法的大多数语言 - 我的意思是合适的,不推荐.


Sir*_*rko 5

这种风格被称为尤达条件.

基本上它与common($variable === value)样式具有相同的行为,但有一个优点:

编译器会引发的情况下,你写了一个错误=,而不是=====错误.由于您无法重新分配常量(在示例中为null值),开发人员会立即识别由于编译器错误/警告而导致的错误,因此可以省去耗时的错误搜索.

所以下面的行是有效的,虽然它不会显示(大多数时候)预期的行为:

if ( $var = null ) { echo 'test'; }
Run Code Online (Sandbox Code Playgroud)

虽然这里显示错误:

if ( null = $var ) { echo 'test'; }
Run Code Online (Sandbox Code Playgroud)

然而,一个主要缺点是这种风格失去了可读性.但这取决于代码的读者和其他一些编码风格指南.