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

Php 在类析构函数中取消设置($this)是个好主意吗,php,Php,可能重复: 在类析构函数中取消设置$this是个好主意吗?这会有什么不同 function __destruct(){ unset($this); } 不,这完全没有意义。unset本身并不释放内存,它只是将其标记为垃圾收集的候选对象,这正是销毁对象已经意味着的。不,它完全没有意义。unset本身并不释放内存,它只是将其标记为垃圾收集的候选对象,这正是销毁对象已经意味着的。-。我想知道您是否可以在类/对象上下文中,甚至在早期的PHP版本中取消它,但是您应该认为它是一个缺陷。 不要那样

可能重复:

在类析构函数中取消设置$this是个好主意吗?这会有什么不同

function __destruct(){
  unset($this);

 }

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

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

-。我想知道您是否可以在类/对象上下文中,甚至在早期的PHP版本中取消它,但是您应该认为它是一个缺陷。 不要那样做。取消设置来自外部的对象指针,垃圾收集将自行处理

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

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

您是否遇到了垃圾收集器无法处理的实际内存问题?只有当你能回答“是”时,你通常需要考虑“析构函数”。

-这是一种特殊的伪函数。我想知道您是否可以在类/对象上下文中,甚至在早期的PHP版本中取消它,但是您应该认为它是一个缺陷。 不要那样做。取消设置来自外部的对象指针,垃圾收集将自行处理

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

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


您是否遇到了垃圾收集器无法处理的实际内存问题?只有当你能回答“是”时,你通常需要考虑u destruct。

如果$this表示的东西只有一个实例,那么没有必要在这里取消设置任何东西。即使您执行$this->template=$this,PHP垃圾收集也会为您清除它。我想你的问题更多的是好奇,而不是碰到一个具体的问题,对吧?教授,不,这不会产生问题。PHP是垃圾收集的,当您删除对它的所有引用时,使用的任何内存都将被释放,也就是说,由于对象不在任何变量中,因此没有任何内容可以访问该对象。如果只有一个由$this表示的实例,则无需在此处取消设置任何内容。即使您执行$this->template=$this,PHP垃圾收集也会为您清除它。我想你的问题更多的是好奇,而不是碰到一个具体的问题,对吧?教授,不,这不会产生问题。PHP是垃圾收集的,当您删除对它的所有引用时,使用的任何内存都将被释放,也就是说,由于对象不在任何变量中,任何东西都无法到达该对象。即使这会造成内存问题,您已经创建了一个设计问题,这将阻止您正确处理它。我必须承认,你的问题理论性很强。相反,尊重你的感官,并将其视为一个设计问题的气味,将所有东西连接到$this。即使这会造成内存问题,你已经创建了一个设计问题,这将阻止你正确处理它。我必须承认,你的问题理论性很强。相反,尊重你的感官,把它当作一种设计问题的气味,把所有东西都和这个联系起来。