PHP对象实例是否有可能销毁/取消自身?假设我有一个代表文件的类,然后我随后使用该类删除该文件。我可以以某种方式从一个自己的方法中取消设置实例吗?
$file = new FileClass();
$file->copy('/some/new/path/');
$file->delete();
// ... at this point $file would be seen as unset.
答案 0 :(得分:14)
不,不可能从一个不合逻辑的范围内破坏一个类。 unset($this)
将无效(至少不如预期)。
为什么不使用
unset($file);
并定义__destruct
函数,您可以在其中执行通常在delete
中执行的任务?
答案 1 :(得分:4)
或者,您可以限制$ file的范围,以便在不再使用时收集垃圾:
call_user_func(function() {
$file = new FileClass();
$file->copy('/some/new/path/');
$file->delete();
});
// ... at this point $file would be seen as unset.
答案 2 :(得分:0)
这是我能想到的唯一解决方案:
function delete($var_name) {
unset($GLOBALS[$var_name]);
}
然后你做:
$file->delete('file');
无论如何,一堂课不能自杀(没有外界的帮助)。