将return关键字放在函数末尾但是放在中间是否合法?

时间:2014-04-15 07:47:05

标签: php return

我有这样的功能:

function database_connect(){
    $mysqli = new mysqli($_POST['mysql_host'],$_POST['mysql_username'],$_POST['mysql_password']);
    /* check connection */
    if ($mysqli->connect_errno) {
        return FALSE;
    }

    /* check if server is alive */
    if ($mysqli->ping()) {
        return TRUE;
    } else {
        return FALSE;
    }

    /* close connection */
    $mysqli->close();
}

将return关键字放在函数末尾但是放在中间是否合法?

在一个函数中使用return一次更合法吗?

4 个答案:

答案 0 :(得分:2)

是的,在语法上可以在函数中的任何地方使用return,就像使用多个return语句一样。请记住,退回后不会再执行任何代码,因此$mysqli->close()无法执行。

为了便于阅读,您可能更喜欢为该功能设置一个退出点。

考虑使用单个退出点的替代方案:

function database_connect(){
    $output = false;

    $mysqli = new mysqli($_POST['mysql_host'],$_POST['mysql_username'],$_POST['mysql_password']);

    /* check connection */
    if (!$mysqli->connect_errno) {

        /* check if server is alive */
        if ($mysqli->ping()) {
            $output = true;
        }

    }

    return $output;
}

答案 1 :(得分:2)

是的,你的功能绝对可以return。根据不同的条件,您还可以在函数内部进行多次返回。

请注意,一旦任何返回,其下面的任何代码都将无法执行。

答案 2 :(得分:1)

是的,您肯定可以将return放在您希望该函数返回的位置,而不是继续执行。

For Example:

在您的代码中,database_connect()函数returning来自if condition credentials are not valid,否则执行将proceed if they valid

syntactically甚至是logically,这是合法且有效的。

希望这会有所帮助。

答案 3 :(得分:1)

在某种意义上说,网络警察不会逮捕你是合法的。

但是仔细观察,你有一个 if / else 语句,其中 if else 都包含return 。在这种情况下,将忽略其余代码。总而言之,最后一条指令$mysqli->close();永远不会执行,因为PHP会在您拨打return时退出该功能。

我会使用类似的东西:

function database_connect(){
    $mysqli = new mysqli($_POST['mysql_host'],$_POST['mysql_username'],$_POST['mysql_password']);
    /* check connection */
    if ($mysqli->connect_errno) {
        return FALSE;
    }
    return_state=FALSE;        
    /* check if server is alive */
    if ($mysqli->ping()) {
        return TRUE;

    $mysqli->close();
    return return_state;


}