Php 条件语句中的顺序
可能重复:Php 条件语句中的顺序,php,Php,可能重复: 我注意到很多PHP代码使用条件语句,比如CONST==VARIABLE。我是在语法总是反向表达的情况下长大的。这种结构有什么原因吗 例如: // this is the way I see it most typically represented in PHP if ( false == $foobar ) { // do this } // this is the way I normally do it if ( $foobar == false ) { // do
我注意到很多PHP代码使用条件语句,比如CONST==VARIABLE。我是在语法总是反向表达的情况下长大的。这种结构有什么原因吗 例如:
// this is the way I see it most typically represented in PHP
if ( false == $foobar ) { // do this }
// this is the way I normally do it
if ( $foobar == false ) { // do this }
通常的做法正是大多数程序员的做法。第一个示例称为yoda条件:
这是为了防止在
=
和=
之间出现常见的打字错误,称为yoda情况。考虑以下事项:
if( false = $foobar) {
这将导致一个错误,捕获被认为是bug的内容,因为您不能将任何内容分配给false
。相反:
if( $foobar = false) {
这是有效的语法,很容易犯错误
然而,我通常更喜欢
if($foobar==false)
语法,因为单元测试应该能够捕获这些编程错误。它通常被称为“Yoda条件”。有些人用它来代替平等来防止分配错误。我的意见不是引入拼写错误,而是采用一种奇怪的编码惯例来防止拼写错误。这样做更好:如果(!$foobar){//do this}但两者都有相同的结果,我想知道为什么有人会在简单的时显式测试$foobar==false
$foobar
应该已经足够了。)当然,$foobar==false
完全是另一回事。)@raina77ow在PHP和其他一些动态类型的langs中,booleanFALSE
与“falsiness”是一个独立的特定事物。考虑<代码> $var =“”< /代码>;代码>$var为true,但有时需要验证它实际上是布尔值FALSE
。对于PHP,它有助于同时返回0
和FALSE
的函数,例如strpos()
。所以,$foobar=strpos($haystack,$needle)
可以有一个有效的返回值0
,或者错误时返回值false
。你们是否都在暗示这种测试可以通过=
?)但这是原始问题中使用的形式,因此我的评论。