PHP __Constructor和__Destructor问题

chu*_*tsu 2 php constructor destructor

我一直在努力学习PHP的面向对象方面,并且想知道:

如果我使用_constructor打开与数据库的连接,使用该类中的函数(例如插入),定义的__destructor会在执行"insert"方法后关闭连接吗?

class data(){
  function __constructor {
    // connect to db
  }

  function insert($data){
    // mysql_query(...)
  }

  function __destructor {
    // close connection to db
  }
}

$obj = new db();
$obj->insert('mumbo jumbo');
Run Code Online (Sandbox Code Playgroud)

或者与数据库的连接是否仍然打开?因为我读到析构函数只在对象被销毁时运行.但是你怎么摧毁一个物体?

Mar*_*ark 6

在PHP中,当一个对象超出范围时会被销毁.这通常是在脚本停止执行或者在结束时创建它的函数时,但您可以使用以下命令在代码的早期销毁对象:

unset($my_variable);  
Run Code Online (Sandbox Code Playgroud)

因此,要回答您的问题,您应该可以在大多数情况下允许析构函数为您处理关闭数据库,尤其是使用小脚本时.

  • 请注意,该行只会导致对象被释放,并且如果`$ my_variable`是指向该对象的最后一件事,则会调用其析构函数. (2认同)