PHP - 如何销毁它包含的对象和对象?

我有一个用 PHP 编写的 CLI 脚本。在此脚本中,我有一个 mainClass 实例,其中包含许多存储在 PHP 数组中的其他类型的对象实例。如何销毁 $mainObject 及其包含的所有对象?

示例代码:

class mainClass
{
    private $_array1 = array();
    private $_array2 = array();
    private $_array3 = array();

    public function __construct($data)
    {
        foreach ($data['a1'] as $val) {
            $this->_array1[] = new Object1($val);
        }
        foreach ($data['a2'] as $val) {
            $this->_array2[] = new Object2($val);
        }
        foreach ($data['a3'] as $val) {
            $this->_array3[] = new Object3($val);
        }
    }
}

$mainObject = new mainClass($data);

function someFunction(mainClass $mainObject)
{
    unset($mainObject);
}
  1. unset($mainObject) 是否会销毁它及其包含的所有对象?
  2. 我必须分别销毁每个对象吗?
  3. 我应该使用 mainClass 的析构函数来销毁 $mainObject 包含的对象(调用它们的析构函数)吗?

最佳答案

你正在寻找 unset()。

但请注意,您不能显式销毁对象。

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

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

请引用此链接

Best way to destroy PHP object?

https://stackoverflow.com/questions/29535041/

相关文章:

html - 删除特定的 td 边框?

php - fatal error : Call to undefined function mb_

python - 如何在不重复的情况下从numpy数组中提取随机索引的N个元素?

java - 如何从 3 个整数组成 HashMap 的键?

java - RestEasy 忽略枚举的 @JsonCreator 方法

wpf - 如何将打印到标签上的文本设为粗体、斜体或下划线?

php - 无法以正确的格式导出 xlsx 或 xls 所有数据都是困惑的

bash - jenkins - 如何将值从 bash 传递到 groovy?

eclipse - .gitignore 文件在每次项目发生变化时添加 "/bin/"

php - 如何在codeigniter中使用回调函数