PHP需要__destruct方法吗?

前端之家收集整理的这篇文章主要介绍了PHP需要__destruct方法吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
手册说

The destructor method will be called as soon as all references to a
particular object are removed or when the object is explicitly
destroyed or in any order in shutdown sequence.

PHP GC不够用吗?有人可以举例说__destruct方法是必要的吗?

析构函数与释放内存没有任何关系 – 相反,它是一个“钩子”,允许在对象符合回收条件时运行自定义代码.也就是说,它与构造函数相反 – 构造函数不分配内存(因为在调用构造函数之前由GC完成)因此析构函数不会释放内存(因为这将由GC完成)然后).

虽然GC可以很好地管理本机资源(例如其他对象和对象图),但是诸如文件句柄之类的外部资源仍然必须“手动处理”.例如,假设一个MyFile类,析构函数将确保文件(如果打开)将被关闭 – 虽然可以说“更好”使它成为对对象调用Close / Dispose操作的要求,析构函数可以是在这种情况下用作后退机制.

我会反对使用GC语言中的析构函数的一般用法.他们可以引入一些微妙的问题,例如明显的非确定性和意外保持对象存活的能力 – 即使在使用引用计数的PHP等语言中也是如此. (Java / JVM和.NET模型使用的终结器更加挑剔.)

快乐的编码.

猜你在找的PHP相关文章