Php 变量===值和值===变量之间的差异?
a)Php 变量===值和值===变量之间的差异?,php,zend-framework,equality,Php,Zend Framework,Equality,a) if(null === $object) { //take some action } b) 我习惯于像b)那样做,但在Zend框架中,我发现他们像a)那样做的地方随处可见。它有什么好处吗 谢谢。不,没有区别 当您编写$a=null而不是$a==null(或$a==null)时,后者应该有助于避免愚蠢的打字错误。在第一种情况下,由于赋值而不是比较,您将得到逻辑错误;在第二种情况下,您将得到致命错误,这将帮助您更快地发现问题。不,没有区别 当您编写$a=null
if(null === $object)
{
//take some action
}
b)
我习惯于像b)那样做,但在Zend框架中,我发现他们像a)那样做的地方随处可见。它有什么好处吗
谢谢。不,没有区别
当您编写
$a=null
而不是$a==null
(或$a==null
)时,后者应该有助于避免愚蠢的打字错误。在第一种情况下,由于赋值而不是比较,您将得到逻辑错误;在第二种情况下,您将得到致命错误,这将帮助您更快地发现问题。不,没有区别
当您编写
$a=null
而不是$a==null
(或$a==null
)时,后者应该有助于避免愚蠢的打字错误。在第一种情况下,由于赋值而不是比较,您将得到逻辑错误;在第二种情况下,您将得到致命错误,这将帮助您更快地找到问题。第二种方法根据null
检查变量的值和类型,两种方法中的错误应该不同 第二种方法根据null
检查变量的值和类型,两种方法的错误应该不同 没有区别,它用于避免错误(如将变量设置为null
,不进行比较),但是null===$object
通常被认为是避免输入错误的坏方法(c)。没有区别,它用于避免错误(如将变量设置为null
,不进行比较),然而,null===$object
通常被认为是避免打字错误的坏方法。$object===null
表达式比null===$object
更人性化,因为第二个表达式打破了从左到右的自然阅读顺序。这就是为什么即使对口译员来说并没有太大的区别,但人类阅读起来却有点困难。涉及一些逻辑-如果使用if..else语句,它应该是什么样的?“如果null
等于$object
。等一下,null
是null
,它怎么能等于其他东西呢?哦,天啊,我们实际上比较了右撇子值和左撇子值,这是相反的东西。所以,如果$object
等于null
,那么我们应该……”。你每次都是这样想的
我的结论是:尽可能地使用
$value==const
!很久以前,人们写了if($value=const)
,但这些时代已经过去了。现在每个IDE都可以告诉你这些简单的错误。这个$object===null
表达式比null====object
更人性化,因为第二个表达式打破了从左到右的自然阅读顺序。这就是为什么即使对口译员来说并没有太大的区别,但人类阅读起来却有点困难。涉及一些逻辑-如果使用if..else语句,它应该是什么样的?“如果null
等于$object
。等一下,null
是null
,它怎么能等于其他东西呢?哦,天啊,我们实际上比较了右撇子值和左撇子值,这是相反的东西。所以,如果$object
等于null
,那么我们应该……”。你每次都是这样想的
我的结论是:尽可能地使用$value==const
!很久以前,人们写了if($value=const)
,但这些时代已经过去了。现在每个IDE都可以告诉你这些简单的错误。b)比a)可读性好得多
a)被一些谨小慎微的人认为不太容易出错,因为可能会将=
与=
混淆但如果是三个,我怀疑有人会把它和一个混淆。b)比a)更可读 a)被一些谨小慎微的人认为不太容易出错,因为可能会将
=
与=
混淆但是如果是三个,我怀疑有人会把它和一个混淆。这是开发者试图停止意外赋值的选择
这两种比较方法的功能完全相同,但在“a”的情况下,它会停止任何意外赋值,因为您不能将某个值赋值为null。这是开发人员尝试停止意外赋值的选择
这两种比较方法的功能完全相同,但在“a”的情况下,它会停止任何意外的值赋值,因为您无法将某个值赋值为null。在javascript中,您会遇到类型强制的问题。PHP不这样做吗?在javascript中,您会遇到类型强制的问题。PHP不这样做吗?自然阅读顺序将以两种方式工作。此外,好的做法是为从左到右的读者编写
NULL
lefthand,以防止打字错误(我们人类也会这样做)。所以照顾自己更自然,不是吗?从字面上看-1对于我来说,如果$apple是红色的,那么阅读要比阅读要容易得多,而如果红色是$apple的话,阅读要容易得多。我同意,在这种情况下,我们可以进行打字,但我认为主要目标是克服代码复杂性,使其易于理解。我更喜欢让我的代码更具可读性,并且有键入=
而不是=
的风险,因为这种情况很少发生,而且很容易发现是否遵循干净的代码规则——编写尽可能小的函数。更好的阅读方法是:if($apple->isRed())
。不要把动词和名词混在一起,而要使名词成为宾语和动词的方法。我的论点更像是这样:if(a==b)
或者if(b==a)
读起来是一样的。这是一个比较(双面),所以自然读数应该无关紧要。是的,当a
和b
是变量时,你是完全正确的。(在我最后的评论中,我不得不将变量命名为$apple\u c
if($object === null)
{
//take some action
}