如何在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
相关产品推荐
相关产品推荐

