(PHP)从类代码中取消设置对象
发布时间:2020-12-13 21:45:10 所属栏目:PHP教程 来源:网络整理
导读:是否可以通过执行该特定类的代码来取消(清除或取消实例化)类的对象? 我的场景是,由于某种原因,我达到了一个点,对象没有任何意义存在,所以我想确保通过在内存中杀死它的引用不再使用它. 这是一个片段示例: class Foo { public $bar = "doh!"; function dest
是否可以通过执行该特定类的代码来取消(清除或取消实例化)类的对象?
我的场景是,由于某种原因,我达到了一个点,对象没有任何意义存在,所以我想确保通过在内存中杀死它的引用不再使用它. 这是一个片段示例: class Foo { public $bar = "doh!"; function destroy() { // ??? } } $o = new Foo(); echo $o->bar . 'n'; $o->destroy(); echo $o->bar . 'n'; // I expect an error here... 如果我在类代码之外执行“unset”命令,它显然有效: $o = new Foo(); unset($o); echo $o->bar . 'n'; // PHP Notice: Undefined property: Foo::$bar in ... 但我尝试在“destroy”方法中执行此操作,通过调用“unset”或创建自定义“__destruct”,但没有一个工作. 任何想法都非常受欢迎. 干杯, 解决方法
考虑到您无法明确销毁对象.
允许PHP垃圾收集器对对象进行操作的方法是: $var = null; // set to null unset($var); // unset 对象将留在那里.但是,如果取消设置对象并且脚本将PHP推送到内存限制,则不需要的对象将被垃圾回收.我会选择unset(),因为它接缝会有更好的性能(not tested but documented on one of the comments from the PHP official manual). 这就是说,请记住,PHP总是在提供页面后立即销毁对象.所以这应该只需要很长的循环和/或密集的页面. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |