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 $c2unset $c1 sf::destructnull $c2null $c1 sf::destruct123 $c2456 $c1 sf::destruct the end
デストラクターは、オブジェクトへのすべての参照が削除されるか、オブジェクトが明示的に破棄されるときに実行されます。
通常、php はスクリプトの終了時に参照を破棄し (設定解除ではなく)、スクリプトが終了する前に実行されます。
以上がPHP: デストラクター メソッド __destruct はどのような状況で実行されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。