我有这样的功能:
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一次更合法吗?
答案 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;
}