我应该在调用破坏它的函数后取消设置()资源变量吗?

时间:2018-03-15 23:37:58

标签: php

假设我使用stream资源类型打开文件:

$file = fopen('1.txt', 'w+');

如果我想破坏资源,我会打电话给fclose()

fclose($file);

但我认为fclose()只会破坏资源而不是变量本身,我知道这是因为当我执行以下操作时:

<?php
    $file = fopen('1.txt', 'w+');
    fclose($file);

    xdebug_debug_zval('file');
?>

我得到以下结果:

file:

(refcount=1, is_ref=0),resource(3, Unknown)

这意味着变量仍然存在于内存中。

在调用unset($file)来销毁变量后,我应该调用fclose($file)吗?

1 个答案:

答案 0 :(得分:1)

  

在调用fclose($ file)来销毁变量后,我应该调用unset($ file)吗?

在我看来,不,你不应该在unset之后fclose

原因如下:

  • 你不会节省太多内存,而且无论如何PHP都会进行垃圾收集。
  • 您的代码更嘈杂,这意味着可读性更低更低的可维护性,几乎没有任何好处。

当然有一些案例unset有意义或需要。

我发现a nice read关于unset(),你可以在那里了解更多信息。