如果我们在函数返回代码之后编写更多语句会发生什么?

时间:2012-09-17 05:41:39

标签: php

我有基本问题给你们

我有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;   
}

8 个答案:

答案 0 :(得分:2)

他们将被忽略。 <{1}}语句之后的任何内容都不会被执行。

答案 1 :(得分:2)

每当执行return false时,将不会执行以下行。但是,您必须确保在您调用函数的位置100%区分return falsereturn $guid

的返回值

答案 2 :(得分:2)

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

答案 3 :(得分:2)

只是它不会执行(忽略return之后的行。

答案 4 :(得分:1)

该函数将返回,并且在遇到的return语句之后的所有内容都不会被执行。

答案 5 :(得分: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
}

答案 6 :(得分:1)

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

答案 7 :(得分:1)

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

return 执行后,不会执行任何剩余代码。您设置代码的方式很好,假设如果遇到false的{​​{1}},则需要返回$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;