何时在php中使用析构函数?

nev*_*ame 27 php

析构函数的主要目的是什么?

你可以给出一个删除对象时我想要运行的例子吗?

Mat*_*att 19

它为对象提供了准备被杀的机会.这可能意味着手动清理,状态持久性等.

例如,Model可能希望将其所有当前属性保存回数据库.

或者,Database对象本身可能希望关闭它用于与数据库服务器通信的套接字.

  • 另外,需要注意的是,__destruct不仅会在删除对象时被调用,而且还会在对象超出范围时以及脚本结束时被删除 (5认同)
  • - 它也用于清理:D (2认同)

Byr*_*ahl 5

所以,你可能知道构造函数的作用.如果构造函数设置,则析构函数会清除.这是PHP站点的一个例子:

<?php
class my_class {
  public $error_reporting = false;

  function __construct($error_reporting = false) {
    $this->error_reporting = $error_reporting;
  }

  function __destruct() {
    if($this->error_reporting === true) $this->show_report();
    unset($this->error_reporting);
  }
?>
Run Code Online (Sandbox Code Playgroud)

这是关于该主题的PHP文档的链接.