PHP クラスのオブジェクトはいつ破棄されますか?
質問がありますが、オブジェクトはいつ自動的に破棄されますか? もちろん、スクリプトの実行後にオブジェクト a を作成すると、その関数が実行されるときにオブジェクト a が破棄されます。自動的に破壊されます。何ですか?
-----解決策--------------------------------
参考:
http://school.itzcn.com/special-spid-30.html
上記の説明はより詳細です。
投稿者の参考になれば幸いです。
------解決策---------
正確にはガベージコレクタを実行することです次にリサイクルします...
通常は問題ありません。関数終了後にリサイクルされます...
しかし、興味がある場合は、このプログラムを実行できます: (
class A {
function __construct () {
$this ->b = new B($this);
}
function __destruct () {
$this->b->__destruct();
}
}
class B {
function __construct ($parent = NULL) {
$this->parent = $parent;
}
function __destruct () {
unset($ this->parent);
}
}
function test(){
for ($i = 0 ; $i <10000 ; $i++) {
$ a = new A();
//$a->__destruct() // この行をコメントアウトする場合とコメントアウトしない場合の違いを確認してください
}
}
test( );
echonumber_format(memory_get_usage());
上記の行をコメントしたのとコメントしなかったのでは結果が全く異なります