如何销毁一个对象?

新手上路,请多包涵

据我所知(很少),有两种方法:

 $var = new object()

然后:

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

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

原文由 PandemoniumSyndicate 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 477
2 个回答

您正在寻找 unset()

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

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

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

原文由 Frankie 发布,翻译遵循 CC BY-SA 3.0 许可协议

可能是在您正在创建一个新的 mysqli 对象的情况下。

$MyConnection = new mysqli($hn, $un, $pw, $db);

但即使你关闭了对象

$MyConnection->close();

如果你使用 print_r() 检查 $MyConnection 的内容,你会得到如下错误:

 Error:
mysqli Object

Warning: print_r(): Property access is not allowed yet in /path/to/program on line ..
( [affected_rows] => [client_info] => [client_version] =>.................)

在这种情况下,您不能使用 unlink() 因为 unlink() 将需要路径名字符串,但在这种情况下 $MyConnection 是一个对象。

因此,您可以选择将其值设置为 null:

$MyConnection = null;

现在一切顺利,正如您所料。您在变量 $MyConnection 中没有任何内容,并且您已经清理了 mysqli 对象。

建议在将变量的值设置为 null 之前关闭对象。

原文由 Subrat Kumar Palhar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题