Может ли экземпляр класса самоуничтожиться?
Возможно ли, чтобы экземпляр объекта PHP уничтожал/удалял себя? Скажем, у меня был класс, который представлял файл, а затем я впоследствии удаляю этот файл с помощью класса. Могу ли я каким-либо образом удалить экземпляр из одного из своих методов?
$file = new FileClass();
$file->copy('/some/new/path/');
$file->delete();
// ... at this point $file would be seen as unset.
Ответы
Ответ 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');
Во всяком случае, класс не может самоубийство (без помощи со стороны).