首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP __Constructor和__Destructor问题

PHP __Constructor和__Destructor问题
EN

Stack Overflow用户
提问于 2009-08-19 18:06:53
回答 5查看 1.1K关注 0票数 2

我一直在尝试学习PHP的面向对象方面,并想知道:

如果我使用_constructor打开到数据库的连接,则使用该类中的函数(例如,insert),那么在执行"insert“方法后,定义的__destructor是否会关闭连接?

代码语言:javascript
复制
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');

或者到数据库的连接仍然是打开的?因为我读到只有当对象被销毁时析构函数才会运行。但是如何销毁一个对象呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-19 18:10:42

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

代码语言:javascript
复制
unset($my_variable);  

因此,为了回答您的问题,您应该可以允许析构函数在大多数情况下为您关闭DB,特别是使用小脚本。

票数 6
EN

Stack Overflow用户

发布于 2009-08-19 18:12:21

是的,只要您为构造函数和析构函数使用正确的名称__construct() and __destruct(),就可以很好地工作,而不是使用现有名称。

票数 3
EN

Stack Overflow用户

发布于 2009-08-19 18:12:33

一旦不再引用该对象,该对象就会被销毁,例如,通过unset()-ting保存该对象的最后一个变量,或者当脚本执行终止时。

顺便说一句,魔术方法被命名为__construct__destruct,没有尾随的-or

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1301654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档