2012-07-19 114 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");