我一直在尝试学习PHP的面向对象方面,并想知道:
如果我使用_constructor打开到数据库的连接,则使用该类中的函数(例如,insert),那么在执行"insert“方法后,定义的__destructor是否会关闭连接?
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');或者到数据库的连接仍然是打开的?因为我读到只有当对象被销毁时析构函数才会运行。但是如何销毁一个对象呢?
发布于 2009-08-19 18:10:42
在PHP中,当对象超出作用域时,它就会被销毁。这通常是在脚本停止执行或在其中创建的函数结束时,但您可以在代码早期使用以下命令销毁对象:
unset($my_variable); 因此,为了回答您的问题,您应该可以允许析构函数在大多数情况下为您关闭DB,特别是使用小脚本。
发布于 2009-08-19 18:12:21
是的,只要您为构造函数和析构函数使用正确的名称__construct() and __destruct(),就可以很好地工作,而不是使用现有名称。
发布于 2009-08-19 18:12:33
一旦不再引用该对象,该对象就会被销毁,例如,通过unset()-ting保存该对象的最后一个变量,或者当脚本执行终止时。
顺便说一句,魔术方法被命名为__construct和__destruct,没有尾随的-or。
https://stackoverflow.com/questions/1301654
复制相似问题