如何从子类中调用父类的析构函数?

时间:2013-09-10 10:45:12

标签: php class

有没有办法从子类中的调用父类的默认析构函数,这样父类的所有成员都不会保持活动状态子类的特定实例

在这种情况下,没有为父类定义析构函数。如果父类有许多成员变量,则可能会使用此方法。然后,此方法比为每个成员变量使用 unset()更有用。

有没有可能的解决方案?

2 个答案:

答案 0 :(得分:1)

当对象最后一次调用时,会自动调用析构函数。

  

与构造函数一样,父析构函数不会被隐式调用   引擎。为了运行父析构函数,人们必须这样做   在析构函数体中显式调用parent :: __ destruct()。也喜欢   构造函数,子类可以继承父类的析构函数   没有实现一个。 - http://php.net/manual/en/language.oop5.decon.php

因此,您可以从子类而不是构造函数中调用来自公共函数__destructor的parent :: __析构函数。

答案 1 :(得分:0)

没有为主类定义__destruct()函数(也可以称为parent形式扩展类),因此,调用parent::__destruct();会产生有效且预期的致命错误:

Fatal error: Call to undefined method c1::__destruct()

您可以使用self::__destruct();$this->__destruct()

如果要将__destrcut()添加到父级,请执行:

class c1
{
    public $a=10;
    public function __construct()
    {
        echo "Called Construct_c1()<br>";
    }
    public function __destruct()
    {
        echo "Called Destruct_c1()<br>";
    }
}

现在可用于parent::__destruct();来电