有没有办法从子类中的调用父类的默认析构函数,这样父类的所有成员都不会保持活动状态子类的特定实例?
在这种情况下,没有为父类定义析构函数。如果父类有许多成员变量,则可能会使用此方法。然后,此方法比为每个成员变量使用 unset()更有用。
有没有可能的解决方案?
答案 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();
来电