5

如果从函数内部调用,return 语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。

引用自 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 永远不会被关闭并且我的数据库连接保持打开状态,因为我返回了一些东西并结束了函数的执行......

那么我是否应该返回一些设置变量的值,然后在关闭所有内容后返回该值?

我问,因为我的代码正在运行并且我没有收到任何错误,即使我以前写过这样的函数......

4

1 回答 1

3

你是对的,在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否则,您应该在调用之前移动释放和关闭。

于 2013-03-25T14:00:11.887 回答