1

可能重复:
我应该在 php __destruct() 中使用 unset 吗?

在类 destruct 中 unset($this) 是个好主意吗?它会有什么不同?

function __destruct(){
  unset($this);

 }
4

2 回答 2

3

$this是 PHP 中的一个特殊变量- 很特殊,它是伪变量。我想知道您是否可以从类/对象上下文中完全取消它,也许在早期的 PHP 版本中,但是您应该认为它是一个缺陷。

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

__destruct函数用于取消设置实际上位于对象内部的“外部”对象指针$this,例如使用聚合和组合。

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

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

于 2012-11-17T11:58:49.867 回答
2

不,这完全没有意义。unset本身并不释放内存,它只是将其标记为垃圾收集的候选对象,这正是销毁对象的含义。

于 2012-11-17T11:58:23.423 回答