2012-07-19 108 views
0

在PHP中写这个最好的方法是什么,所以我知道哪个条件失败并易于维护?而不诉诸多个if else语句...多条件语句

if ((!$titleBlockPresent || !$leadBlock || ($allDoubleBlockCount !=2 || $allDoubleBlockCount!=1) ||$countFirstSmallShowBlocks !=2 ||$countSecondSmallShowBlocks !=2) && !$contentNotAvailableMessage) 
{ 
    $this->fail("Block missing in the horizontal list of blocks on the non live carousel"); 
} 
+1

简化您的逻辑,以便您不一次检查7个条件。 – deceze 2012-07-19 11:45:25

+0

你问最好的方法,但在你的问题中,你说“不诉诸多个if else陈述”。我认为最重要的是大多数(或许多)人认为多种表述是最好的方式。 – MJB 2012-07-19 11:52:52

回答

1

试试这个

$shouldFail = FALSE; 
switch(TRUE){ 
case !titleBlockPresent: 
    echo "No title block present<br/>"; 
    $shouldFail = TRUE; 
case !$leadBlock: 
    echo "No lead block<br/>"; 

    // the rest of the code 
} 
0

如果移动检查到的功能,这将是明确的,你和其他人在看你的代码,很容易维护,例如:

function tester($var1, $var2, $var3) 
{ 
    if (!$var1) 
    { 
     $this->fail("error1"); 
     return FALSE; 
    } 
    if (!$var2) 
    { 
     $this->fail("error2"); 
     return FALSE; 
    } 
    if (!$var3) 
    { 
     $this->fail("error3"); 
     return FALSE; 
    } 
    return TRUE; 
} 

你也可以添加到需要进一步澄清各if评论。

0

我刚刚想出这个,但发现它是非常相似的GeoPhoenix的回答,只是周围的其他方法,可能需要检查了这一点,还有:

$bFail = false; 

if(!$bFail && $contentNotAvailableMessage) $bFail = true; 
if(!$bFail && !$titleBlockPresent) $bFail = true; 
if(!$bFail && !$leadBlock) $bFail = true; 

if(!$bFail && $allDoubleBlockCount != 2) $bFail = true; 
if(!$bFail && $allDoubleBlockCount != 1) $bFail = true; 
if(!$bFail && $countFirstSmallShowBlocks != 2) $bFail = true; 
if(!$bFail && $countSecondSmallShowBlocks != 2) $bFail = true; 

if($bFail) $this->fail("Block missing in the horizontal list of blocks on the non live carousel");