У меня есть скрипт CLI, написанный на PHP. В этом скрипте у меня есть один экземпляр 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);
}
снята с охраны ($ mainObject); Уничтожит объект и память станет свободной.
Вы ищете unset ().
Но учтите, что вы не можете явно уничтожить объект.
Он останется там, однако, если вы сбросите объект, и ваш скрипт выдвинет PHP в пределы памяти, ненужные объекты будут собираться мусором. Я бы пошел с unset () (в отличие от установки на ноль), так как он кажется, чтобы иметь лучшую производительность (не проверено, но задокументировано в одном из комментариев из официального руководства PHP).
При этом имейте в виду, что PHP всегда уничтожает объекты, как только страница обслуживается. Так что это должно быть необходимо только на очень длинных циклах и / или на страницах с интенсивной интенсивностью.
пожалуйста, обратитесь по этой ссылке
Рекомендуется инициализировать этот объект нулем.
$mainObject = NULL;
Ссылка:
Что лучше при освобождении памяти с помощью PHP: unset () или $ var = null