ホームページ >バックエンド開発 >PHPチュートリアル >PHPのデストラクタとガベージコレクションの詳細な分析
Destructor: objectがガベージになったとき、またはオブジェクトが明示的に破棄されたときに実行されます。
PHP では、このオブジェクトを指す 変数 が存在しない場合、オブジェクトはガベージになります。 PHP はメモリ内でそれを破壊します。これは、メモリ オーバーフローを防ぐための PHP の GC (ガベージ コレクター) ガベージ処理メカニズムです。 PHP スレッドが終了すると、現在占有されているすべてのメモリ領域が破棄され、現在のプログラム内のすべてのオブジェクトも破棄されます。
destruct() デストラクターは、ガベージオブジェクトがリサイクルされるときに実行されます。
デストラクターを明示的に呼び出すこともできますが、それは行わないでください。
デストラクタはシステムによって自動的に呼び出されます。プログラム内でオブジェクトのデストラクタを呼び出さないでください。
デストラクターはパラメータを取ることができません。
すべてのオブジェクトはプログラムが終了する前に破棄されます。デストラクターが呼び出されます。
<?php class Person{ public function destruct() { echo "<br />析构函数在这里执行"; echo "<br />这里一般用来放置,关闭数据库,关闭文件等等收尾工作。"; } } $p = new Person(); for ($i = 0; $i < 5; $i++) { echo "<br /> $i"; } //我们在这里看到,在PHP程序结束前,对象被销毁了。 ?>
オブジェクトが指されていない場合、オブジェクトは破棄されます。
<?php class Person { public function destruct() { echo "<br />析构函数在这里执行"; echo "<br />这里一般用来放置,关闭数据库,关闭文件等等收尾工作。"; } } $p = new Person(); $p = null; //我们在这里看到,析构函数在这里被执行了。 for ($i = 0; $i < 5; $i++) { echo "<br /> $i"; } ?>
11行目で$pを空に設定するか、$pに文字列を代入して、$pが指すオブジェクトがガベージオブジェクトになるようにします。 PHP はこのオブジェクトを破棄します。
<?php class Person { public function destruct() { echo "<br />析构函数在这里执行<br />"; } } $p = new Person(); $p1 = $p; //设定新引用变量$p1也指向这个对象 unset($p); echo "是否看到/$p被销毁,对象也被销毁呢?"; for ($i = 0; $i < 5; $i++) { echo "<br /> $i"; } unset($p1); echo "我们看到这里,析构函数被执行了"; ?>
参照変数の設定を解除すると、オブジェクトではなくオブジェクトを指す変数が破棄されます。
以上がPHPのデストラクタとガベージコレクションの詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。