1

皆さんに基本的な質問があります

指定されたタイプのファイルハンドラー名を検証および作成するphp関数があります。

ただし、次のコードがelseに移動するかどうかを知りたいだけです.guidを作成するコーディングの次の行が実行されるか、無視されますか?

private function fileFormat($type=false){

    if($type=='CreditCard')
        $prefix='CC-';
    elseif($type=='DirectDebit')
        $prefix='DD-';
    else 
        return false;   

    $date         = $prefix.'-'.date('d-m-Y', time());
    $guid         = '' . md5($date) . '.csv';
    return $guid;   
}
4

8 に答える 8

2

それらは無視されます。ステートメント以降returnは実行されません。

于 2012-09-17T05:42:39.203 に答える
2

が実行されるたびにreturn false、次の行は実行されません。return falseただし、関数を呼び出す場所で、戻り値と戻り値を 100% 区別できることを確認する必要があります。return $guid

于 2012-09-17T05:42:59.370 に答える
2

return ステートメントが実行された後、それ以上の行は実行されません。

于 2012-09-17T05:43:14.703 に答える
2

単純に、次の行を実行 (無視) しませんreturn

于 2012-09-17T05:43:24.547 に答える
1

同じことを述べている答えがたくさんあるので、死んだ馬を打ち負かすことはありません... しかし、ここで私の説明があります。

areturn実行された後、残りのコードは実行されません。falseどちらの も検出されない場合に が返されることを前提として、コードをセットアップした方法は問題ありません$type。これは一般的な制御フローであり、フラグを設定して欠陥をチェックしてから返すよりも優先されます。

if ($myCondition_1) {
    $a = 1;
} elseif ($myCondition_2) {
    $a = 2;
} else {
    return False;
}
other_operation_on_a($a);
return $a;

(私にとっては)以下よりも優先されます:

$a = False;
if ($myCondition_1) {
    $a = 1;
} elseif ($myCondition_2) {
    $a = 2;
} 
if ($a !== False) {
    other_operation_on_a($a);
}
return $a;
于 2012-09-17T05:48:29.427 に答える
1

関数は戻りますが、return ステートメントの後にあるものはすべて実行されません。

于 2012-09-17T05:43:37.583 に答える
1

アイデアは、制御が呼び出し元のメソッドに返されるということです....したがって、これらの行は決して実行されません。たとえば、IDE が適切であれば、リターンの後に冗長なステートメントがある場合に警告が表示されます。

function PrintHelloWorld()
{
   if($userPresent)
   {
     echo "Hello World" ;
   }
   return "World empty!";
   $something = "blah" ; //redundant (will never execute)
   $something+="Blah" ; //redundant (will never execute) 
//A good IDE should give warnings. But you usually see them as grayed out
}
于 2012-09-17T05:44:14.733 に答える
1

return は else (デフォルト) ケースで実行されるため、これらは無視されます。

于 2012-09-17T05:45:06.080 に答える