如果在函数内调用,则立即返回语句 结束当前函数的执行,并将其参数作为 函数调用的值。
引自php手册:http://php.net/manual/en/function.return.php
所以如果我要写这个函数:
public function check_db_for_desired_value()
{
//...connect to db, prepare stmt, etc.
while (mysqli_stmt_fetch($stmt))
{
if($column == 'desired_value')
{
return TRUE;
}
else
{
return FALSE;
}
}
// these commands would never get executed
mysqli_stmt_free_result($stmt);
mysqli_stmt_close($stmt);
mysqli_close($link);
}
所以(如果在php手册中说的是正确的)我的结果永远不会被释放,我的stmt永远不会被关闭,我的数据库连接保持打开状态,因为我返回了一些内容并结束了函数的执行...
那么我应该不是返回设置变量值的东西,而是在关闭所有内容后返回这个值吗?
我问,因为我的代码工作正常而且我没有收到任何错误,尽管我之前已经写过这样的函数...
答案 0 :(得分:1)
你是对的,return
之后没有执行任何内容。
但您可以使用__destruct
关闭连接并清除结果:
function __destruct() {
mysqli_stmt_free_result($this->stmt); // making $stmt a variable inside class
mysqli_stmt_close($this->stmt);
mysqli_close($this->link);
}
只要没有对特定对象的其他引用,或者在关闭序列期间以任何顺序,就会调用析构函数方法。 - PHP.NET
否则你应该在调用return
之前移动释放和关闭。