You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP子类中覆盖父类__destruct且仅调用子类析构函数?

解决PHP子类仅执行自身__destruct的问题

在PHP中,子类定义__destruct后,默认不会自动触发父类的析构函数——只有当你在子类的__destruct里显式调用parent::__destruct()时,父类的析构才会执行。

如果你的场景中父类的__destruct也被执行了,核心解决方案就是:移除子类析构函数中对parent::__destruct()的调用。

不需要修改任何访问修饰符,这样后续新增的子类也可以遵循同样的逻辑:只要不在自身__destruct中主动调用父类的析构方法,就只会执行子类自己的__destruct。

示例代码

父类定义:

class ParentClass {
    public function __destruct() {
        echo "父类析构函数执行\n";
    }
}

子类定义(仅执行自身析构):

class ChildClass extends ParentClass {
    public function __destruct() {
        echo "子类析构函数执行\n";
        // 移除 parent::__destruct(); 这行,父类析构就不会触发
    }
}

// 测试
$childObj = new ChildClass();
// 对象销毁时,只会输出:子类析构函数执行

内容的提问来源于stack exchange,提问作者Andoh Francis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:21:31