1

我有一个基本问题要问你们

我有 php 函数,它验证并为给定类型创建文件处理程序名称,

但是我只想知道以下代码是否转到其他代码,创建 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执行以下行时,都不会执行。但是,您必须确保在调用函数的地方可以 100% 区分返回值 fromreturn false和 areturn $guid

于 2012-09-17T05:42:59.370 回答
2

执行 return 语句后不再执行任何行。

于 2012-09-17T05:43:14.703 回答
2

只是它不会执行(忽略)以下行return

于 2012-09-17T05:43:24.547 回答
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

它们将被忽略,因为返回将由 else (默认)情况执行。

于 2012-09-17T05:45:06.080 回答
1

不要打死马,现在有很多答案都说明了同样的事情……但这是我的澄清。

areturn执行后,不会执行剩余的代码。您设置代码的方式很好,假设您希望在没有遇到false任何 s 的情况下返回。$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 回答