php 析构方法 __destruct 什么情况下执行
求所有的情况,是不是遇到?>php结束符也执行
按照官方手册的描述,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。代码演示如下
class sf { public function __destruct() { echo __METHOD__ . PHP_EOL; } } $c1 = new sf; $c2 = $c1; echo 'unset $c2' . PHP_EOL; unset($c2); echo 'unset $c1' . PHP_EOL; unset($c1); // ---- $c1 = new sf; $c2 = $c1; echo 'null $c2' . PHP_EOL; $c2 = null; echo 'null $c1' . PHP_EOL; $c1 = null; // ---- $c1 = new sf; $c2 = $c1; echo '123 $c2' . PHP_EOL; $c2 = 123; echo '456 $c1' . PHP_EOL; $c1 = 456; echo 'the end' . PHP_EOL;
运行结果如下
unset $c2 unset $c1 sf::__destruct null $c2 null $c1 sf::__destruct 123 $c2 456 $c1 sf::__destruct the end
2 回答1.6k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
2 回答1.1k 阅读
1 回答946 阅读
1 回答899 阅读
1 回答897 阅读
RTFM
http://php.net/manual/en/language.oop5.decon.php#object.destruct