检查 Zend Framework 发现它们以相反的方式进行所有变量检查:
public function setBootstrap($path, $class = null) {
if (null === $class) { // instead of if($class === null)
$class = 'Bootstrap';
}
这样做的原因是什么?
这也适用于 Java 和 C++ 编程吗?
检查 Zend Framework 发现它们以相反的方式进行所有变量检查:
public function setBootstrap($path, $class = null) {
if (null === $class) { // instead of if($class === null)
$class = 'Bootstrap';
}
这样做的原因是什么?
这也适用于 Java 和 C++ 编程吗?
有些人认为这有助于他们避免写一个单一=
的(一个作业而不是一个相等的比较)
我相信这样做的好处远小于可读性的损失(因此可维护性!)
不测试代码的人可能会依赖这种技巧。回答你的问题,是的,它适用于大多数从 C 派生语法的语言——我的意思是合适,不推荐。
这种风格称为尤达条件。
$variable === value
基本上它与通常的 ( ) 样式具有相同的行为,但有一个优点:
如果您写错或写错了,编译器会抛出=
错误。由于您无法重新分配常量(在示例中为值),因此开发人员会立即识别出由于编译器错误/警告导致的错误,从而免除了耗时的错误搜索。==
===
null
因此,以下行将是有效的,尽管它不会显示(大多数情况下)预期的行为:
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";
}
将打印“null”,只要 PHP 将“”、0、null、false 视为等效的空值,除非使用严格比较来比较实际值和值本身的类型。
第二件事是为什么使用 null === $class 是因为您不能为 null 赋值。而您可以成功犯错并分配 $class = null。