1

重複の可能性:
php __destruct() で unset を使用する必要がありますか?

クラス destruct で unset($this) するのは良い考えですか?

function __destruct(){
  unset($this);

 }
4

2 に答える 2

3

$thisは PHP の特別な変数です。その特別な、疑似変数です。クラス/オブジェクトコンテキスト内から、おそらく以前のPHPバージョンで設定を解除できるかどうか疑問に思いますが、それは欠陥と見なす必要があります。

そんなことしたらダメ。オブジェクト ポインターの設定を解除すると (つまり、外部から)、ガベージ コレクションが自動的に処理されます。

この関数は、集約や構成を使用する場合のよう__destructに、実際にはオブジェクトの内部にある「外部」オブジェクト ポインターの設定を解除するためのものです。$this

特に循環参照では、PHP ガベージ コレクターがより効率的にジョブを実行するのに役立つ場合があります。しかし、これは$thisオブジェクトが実際に何を運ぶかに依存するのではなく、具体的なコードに大きく依存することを意味します。

ガベージ コレクターが対処できないと感じている実際のメモリの問題に遭遇していますか? はいと答えることができる場合にのみ、通常は について考える必要があります__destruct

于 2012-11-17T11:58:49.867 に答える
2

いいえ、まったく無意味です。unsetメモリ自体を解放するのではなく、ガベージ コレクションの候補としてマークするだけです。これは、オブジェクトの破棄がすでに意味することとまったく同じです。

于 2012-11-17T11:58:23.423 に答える