Подтвердить что ты не робот

Может ли экземпляр класса самоуничтожиться?

Возможно ли, чтобы экземпляр объекта PHP уничтожал/удалял себя? Скажем, у меня был класс, который представлял файл, а затем я впоследствии удаляю этот файл с помощью класса. Могу ли я каким-либо образом удалить экземпляр из одного из своих методов?

$file = new FileClass();

$file->copy('/some/new/path/');
$file->delete();

// ... at this point $file would be seen as unset.
4b9b3361

Ответ 1

Нет, невозможно уничтожить класс, внутри которого нелогично. unset($this) не будет работать (по крайней мере, не так, как ожидалось).

Почему бы вам не использовать

unset($file);

и определите функцию __destruct, в которой вы выполняете задачи, которые вы обычно выполняете в delete?

Ответ 2

Кроме того, вы можете ограничить область $file, чтобы он собирал мусор, когда он больше не использовался:

call_user_func(function() {
  $file = new FileClass();
  $file->copy('/some/new/path/');
  $file->delete();
});

// ... at this point $file would be seen as unset.

Ответ 3

Это единственное решение, о котором я могу думать:

function delete($var_name) {
   unset($GLOBALS[$var_name]);
}

Затем выполните следующие действия:

$file->delete('file');

Во всяком случае, класс не может самоубийство (без помощи со стороны).