在类析构函数中取消设置($ this)是一个好主意

时间:2012-11-17 11:56:28

标签: php

  

可能重复:
  Should I use unset in php __destruct()?

在类毁灭中取消设置($ this)是一个好主意,它会有什么不同?

function __destruct(){
  unset($this);

 }

2 个答案:

答案 0 :(得分:3)

$this is a special variable in PHP - 那很特别,它是假的。我想知道你是否可以在类/对象上下文中取消它,可能在早期的PHP版本中,但是你应该认为它是一个缺陷。

不要那样做。取消设置对象指针(来自外部),垃圾收集会自行处理。

__destruct函数用于取消设置$this对象实际内部的“外部”对象指针,就像使用聚合和组合一样。

特别是对于循环引用,它可能有助于PHP垃圾收集器更有效地完成工作。但这不依赖于$this,而是对象实际携带的内容,这意味着它高度依赖于具体的代码。

您是否遇到了垃圾收集器无法处理的实际内存问题?只有当您可以使用回答时,通常需要考虑__destruct

答案 1 :(得分:2)

不,这完全没有意义。 unset本身不释放内存,它只是将其标记为垃圾收集的候选者,这正是破坏对象已经意味着什么。