【问题标题】:php: __destruct questions (OOP newbie)php:__destruct 问题(OOP 新手)
【发布时间】:2014-05-10 10:39:17
【问题描述】:


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

  1. 我可以从 __destruct 调用另一个对象函数还是其他函数已经未声明?例如:

    function __destruct()
        $this->save();
    
  2. 我也可以在我的正常代码中调用 __destruct 函数吗?例如:

    $object_name->__destruct();
    

【问题讨论】:

    标签: php oop function


    【解决方案1】:
    1. 是的,我想这会起作用,尽管在垃圾收集器中调用 save() 会有点违反直觉(而且设计很糟糕)。

    2. 是的,如果你愿意,或者当不再存在对该对象的引用时,它会被 PHP 自动调用。

    【讨论】:

    • 谢谢!我调用了 save() 函数,因为这样喊喊就没有问题了,...
    • @Thomas131 当您想要保存数据时,您应该手动调用 Save()。不要依赖垃圾收集来执行它。如果 Save() 方法依赖于其他也被释放的资源,那么如果你只在析构函数中使用 Save(),它们可能不可用。
    【解决方案2】:

    首先__destruct是对象的析构函数,和__construct一样

    当您创建对象(__construct 将调用)和您删除或销毁对象(__destruct 将被调用)时,上述两个函数都会自动调用

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

    如果反向使用析构函数来释放内存以及任何已分配/锁定的资源,例如文件/打印机,或者可能是任何其他资源。

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

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 2011-05-07
      • 2011-08-18
      • 2014-07-18
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多