PHP: __destruct问题(面向对象编程初学者)

3


我是OOP编程的新手。所以我有两个关于__destruct函数的问题。

  1. Can I call another object-function from __destruct or are the other functions already undeclarated? For example:

    function __destruct()
        $this->save();
    
  2. Can I also call the __destruct function in my normal code? For example:

    $object_name->__destruct();
    
2个回答

3
  1. 是的,我猜那可能有效,尽管在垃圾收集器内调用save()方法有点违反直觉(且设计很糟糕)。

  2. 是的,如果你愿意的话,或者当没有更多对象引用时,PHP会自动调用它。


谢谢!我调用save()函数,这样在关机时就不会出现问题了... - Thomas131
3
当你想要保存数据时,你应该手动调用Save()方法。不要依赖垃圾回收机制去执行它。如果Save()方法依赖于其他正在释放的资源,如果你只在析构函数中调用Save(),这些资源可能不可用。 - GrandmasterB

1

首先,__destruct是一个对象的析构函数,与__construct相同。

以上两个函数都会在创建对象时自动调用(__construct将被调用),并在删除或销毁对象时调用(__destruct将被调用)。

您可以从构造函数或析构函数中调用N个函数。构造函数的主要目的是初始化对象并分配适当的内存位置。

而在析构函数中,则会释放内存以及任何已分配/锁定的资源,例如文件/打印机或其他任何资源。

您还可以通过使用object_name->method name来调用任何其他对象的公共方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接