a)
if(null === $object)
{
//take some action
}
b)中
if($object === null)
{
//take some action
}
我习惯于像b)那样做,但在Zend-Framework中,我发现他们所做的每件事都像a)。这有什么好处吗?
感谢。
答案 0 :(得分:5)
不,没有区别。
当你写$a = null
而不是$a == null
(或$a === null
)时,后者应该有助于避免愚蠢的拼写错误。在第一种情况下,你会得到逻辑错误,因为分配而不是比较,在第二种情况下 - 你会得到致命错误,这将有助于你更快地找到问题。
答案 1 :(得分:1)
没有区别,它用于避免错误(比如将变量设置为null
,而不是比较它们),但是null === $object
通常被认为是错误的方式(c)以避免错别字。
答案 2 :(得分:1)
$object === null
表达式比null === $object
更加人性化,因为第二个表达式打破了从左到右的自然阅读顺序。这就是为什么即使翻译没有太大差异,但是人类阅读起来有点困难。涉及一些逻辑 - 如果你使用if..else语句听起来应该怎么样? “如果null
等于$object
..等一下,null
是null
,它怎么能等于别的呢?哦,哎呀,我们实际比较右撇子对于左撇子的价值,这是相反的东西。所以,如果$object
等于null
那么我们就应该......“。而且你每次都这样想。
我的结论是:每次都可以使用$value == const
!很久以前人们写了if ($value = const)
,但这些时间已经过去了。现在每个IDE都能告诉你这些简单的错误。
答案 3 :(得分:0)
b)比a)更加可读
并且a)被一些过于谨慎的人认为不太容易出错,因为==
可能会导致=
混淆。
但是如果有三个人,我怀疑有人会把它与一个混淆。
答案 4 :(得分:0)
开发商可以选择尝试停止对值进行实际分配。
两种比较方法之间的功能完全相同,但在“a”的情况下,它会停止任何值的意外分配,因为您无法将某些内容指定为null。
答案 5 :(得分:-1)
第二种方法针对null
检查变量的值和类型,两种方法中的错误应该不同。