我有一个用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);
}
答案 0 :(得分:3)
你正在寻找unset()。
但请注意,您无法明确销毁对象。
它将保留在那里,但是如果您取消设置对象并且您的脚本将PHP推送到内存限制,则不需要的对象将被垃圾收集。我会使用unset()(而不是将其设置为null),因为它接缝具有更好的性能(未经过测试,但记录在PHP官方手册的其中一条评论中)。
那就是说要记住,PHP总是在提供页面时销毁对象。所以这应该只需要很长的循环和/或密集的页面。
请参阅此链接
答案 1 :(得分:2)
未设置($ mainObject);将破坏对象和内存将是免费的。
答案 2 :(得分:2)
最佳做法是将该对象初始化为null。
$mainObject = NULL;
参考: What's better at freeing memory with PHP: unset() or $var = null