ホームページ  >  記事  >  バックエンド開発  >  PHP: デストラクター メソッド __destruct はどのような状況で実行されますか?

PHP: デストラクター メソッド __destruct はどのような状況で実行されますか?

黄舟
黄舟オリジナル
2017-07-02 10:36:093968ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。