деструктор — как уничтожить объект и объекты, которые он содержит?

У меня есть скрипт 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);
}
  1. Будет ли unset ($ mainObject) уничтожать его и все объекты, которые он содержит?
  2. Должен ли я уничтожать каждый объект отдельно?
  3. Должен ли я использовать деструктор mainClass для уничтожения объектов (называть их деструкторами), которые содержит $ mainObject?

2

Решение

снята с охраны ($ mainObject); Уничтожит объект и память станет свободной.

2

Другие решения

Вы ищете unset ().

Но учтите, что вы не можете явно уничтожить объект.

Он останется там, однако, если вы сбросите объект, и ваш скрипт выдвинет PHP в пределы памяти, ненужные объекты будут собираться мусором. Я бы пошел с unset () (в отличие от установки на ноль), так как он кажется, чтобы иметь лучшую производительность (не проверено, но задокументировано в одном из комментариев из официального руководства PHP).

При этом имейте в виду, что PHP всегда уничтожает объекты, как только страница обслуживается. Так что это должно быть необходимо только на очень длинных циклах и / или на страницах с интенсивной интенсивностью.

пожалуйста, обратитесь по этой ссылке

Лучший способ уничтожить объект PHP?

3

Рекомендуется инициализировать этот объект нулем.

$mainObject  = NULL;

Ссылка:
Что лучше при освобождении памяти с помощью PHP: unset () или $ var = null

2
По вопросам рекламы [email protected]