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

时间:2016-09-25 22:40:37

标签: php oop destructor

在PHP中,定义类时; 通常是__construct (构造函数)__destruct 对象创建'销毁 时实现

  

在PHP中,一个对象被销毁了#39;什么时候停止使用

现在,这有什么用?它是如何准确使用的,在哪种情况下它会在PHP等编程语言中变得方便?

1 个答案:

答案 0 :(得分:0)

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

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

所以规则是如果一个对象在其生命周期中创建了其他动态对象,它必须有一个析构函数,然后删除它们。如果不能这样整理,可能会留下只会堵塞内存的孤立对象,这就是所谓的内存泄漏。即使默认值是可以接受的,最好定义析构函数......“

查看更多:OO Concept: Constructors & Destructors