PHPのデストラクタとガベージコレクションの詳細な分析

黄舟
リリース: 2023-03-12 10:36:01
オリジナル
1175 人が閲覧しました

Destructor: objectがガベージになったとき、またはオブジェクトが明示的に破棄されたときに実行されます。

GC (ガベージコレクター)

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!