PHP 中的析构函数(destructor)会在以下情况下被调用:
- 当对象不再被引用时,即它所占用的内存需要被回收时,析构函数会自动被调用。这种情况通常发生在对象超出了作用域或者被设置为 null 时。
class MyClass { public function __destruct() { echo "The object is being destroyed."; } } $obj = new MyClass(); // 创建一个新对象 $obj = null; // 将对象设置为 null,此时析构函数会被调用
-
当页面执行完毕,所有对象都将被销毁时,此时析构函数也会被调用。
-
当手动调用
unset()
函数销毁一个对象时,析构函数将立即被调用。
class MyClass { public function __destruct() { echo "The object is being destroyed."; } } $obj = new MyClass(); // 创建一个新对象 unset($obj); // 使用 unset() 函数销毁对象,此时析构函数会被调用
注意:析构函数在对象的引用计数为零时才会被调用。如果一个对象被多个变量引用,那么只有在这些引用都被销毁或超出作用域时,析构函数才会被调用。