如何破坏物体?

2022-08-30 07:03:01

据我所知(这是非常小的),有两种方法,给定:

$var = new object()

然后:

// Method 1: Set to null
$var = null;
// Method 2: Unset 
unset($var); 

其他更好的方法?我在这里劈头发吗?


答案 1

您正在寻找 unset()

但要考虑到您不能显式销毁对象。

它将保留在那里,但是如果您取消设置对象并且脚本将PHP推到内存限制,则不需要的对象将被垃圾回收。我会选择(而不是将其设置为null),因为它似乎具有更好的性能(未经测试,但记录在PHP官方手册的一条评论中)。unset()

也就是说,请记住,PHP总是在页面提供后立即销毁对象。因此,这应该只在非常长的循环和/或繁重的密集页面上需要。


答案 2

一个方便的帖子,解释了关于这个问题的几个误解:

不要显式调用析构函数

这涵盖了关于析构函数如何工作的一些误解。根据 PHP5 文档,显式调用它实际上不会破坏你的变量:

PHP 5 引入了一个类似于其他面向对象语言(如 C++)的析构函数概念。一旦没有对特定对象的其他引用,就会调用析构函数方法,或者在关闭序列期间以任何顺序调用析构函数方法。

上面的帖子确实指出,在某些情况下,将变量设置为 null 可以工作,只要没有其他内容指向分配的内存即可。


推荐