面向对象 PHP 函数 __destruct 如何发挥作用?

Object Oriented PHP how does function __destruct come into play?

在PHP中,在定义类;的时候经常会有一个__construct(constructor)__destruct (析构函数) 创建 时实现到 对象 'destroyed'.

In PHP, an object is 'destroyed' when it stops being used

现在,这有什么帮助?它是如何使用的,在什么情况下它会在编程语言中变得方便,例如 PHP?

"当不再需要一个对象时,它必须被删除。在函数中创建的对象作为局部变量。(...) 每当一个对象被删除时,它的析构函数成员函数就会被调用。它可以理解为什么构造函数如此重要的是,对象在使用前必须正确初始化,但真的有必要有一个特殊的成员函数,在对象即将消失时调用它吗?

在许多情况下,答案是否定的,我们可以让编译器发明一个默认的无操作编译器。但是,假设您的对象包含构建它的检测器命中列表。无需详细说明,这很可能是对象拥有的某种动态对象,并通过指针访问。现在到了删除对象的时候,我们希望删除这个列表,但可能不是它指向的命中!当编译器遇到对象中的指针时,编译器不可能知道它是指向该对象拥有的东西并也将被删除,还是仅指向与该对象相关但独立于该对象的东西。

所以规则是如果一个对象在它的生命周期中创建了其他动态对象,它必须有一个析构函数来删除它们。未能像这样整理可能会留下只会阻塞内存的孤立对象,这称为内存泄漏。即使可以接受默认值,定义析构函数也是一个好主意..."

查看更多:OO Concept: Constructors & Destructors