日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP类实例教程(七):析构函数与PHP的垃圾回收

發(fā)布時(shí)間:2024/9/20 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP类实例教程(七):析构函数与PHP的垃圾回收 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

析構(gòu)函數(shù):當(dāng)某個(gè)對象成為垃圾或者當(dāng)對象被顯式銷毀時(shí)執(zhí)行。

GC (Garbage Collector)

在PHP中,沒有任何變量指向這個(gè)對象時(shí),這個(gè)對象就成為垃圾。PHP會(huì)將其在內(nèi)存中銷毀。這是PHP的GC (Garbage Collector)垃圾處理機(jī)制,防止內(nèi)存溢出。當(dāng)一個(gè)PHP線程結(jié)束時(shí),當(dāng)前占用的所有內(nèi)存空間都會(huì)被銷毀,當(dāng)前程序中的所有對象同樣被銷毀。

__destruct() 析構(gòu)函數(shù),是在垃圾對象被回收時(shí)執(zhí)行。

析構(gòu)函數(shù)也可以被顯式調(diào)用,但不要這樣去做。

析構(gòu)函數(shù)是由系統(tǒng)自動(dòng)調(diào)用的,不要在程序中調(diào)用一個(gè)對象的析構(gòu)函數(shù)。

析構(gòu)函數(shù)不能帶有參數(shù)。

程序結(jié)束前,所有對象被銷毀。析構(gòu)函數(shù)被調(diào)用了。

[php]?view plain?copy
  • ?<?php????
  • class?Person{????
  • ???public?function?__destruct()?{????
  • ??????echo?"<br?/>析構(gòu)函數(shù)在這里執(zhí)行";????
  • ??????echo?"<br?/>這里一般用來放置,關(guān)閉數(shù)據(jù)庫,關(guān)閉文件等等收尾工作。";????
  • ???}????
  • }????
  • $p?=?new?Person();????
  • for?($i?=?0;?$i?<?5;?$i++)?{????
  • ???echo?"<br?/>?$i";????
  • }??
  • //我們在這里看到,在PHP程序結(jié)束前,對象被銷毀了。????
  • ?>???
  • 當(dāng)對象沒有指向時(shí),對象被銷毀。

    [php]?view plain?copy
  • <?php????
  • class?Person?{????
  • ???public?function?__destruct()?{????
  • ??????echo?"<br?/>析構(gòu)函數(shù)在這里執(zhí)行";????
  • ??????echo?"<br?/>這里一般用來放置,關(guān)閉數(shù)據(jù)庫,關(guān)閉文件等等收尾工作。";????
  • ???}????
  • }????
  • $p?=?new?Person();????
  • $p?=?null;????
  • //我們在這里看到,析構(gòu)函數(shù)在這里被執(zhí)行了。????
  • for?($i?=?0;?$i?<?5;?$i++)?{????
  • ???echo?"<br?/>?$i";????
  • }????
  • ?>???
  • 我們將$p設(shè)置為空或者第11行賦予$p一個(gè)字符串,這樣$p之前指向的對象就成為了垃圾對象。PHP將這個(gè)對象垃圾銷毀。

    unset變量

    [php]?view plain?copy
  • <?php????
  • class?Person?{????
  • ???public?function?__destruct()?{????
  • ??????echo?"<br?/>析構(gòu)函數(shù)在這里執(zhí)行<br?/>";????
  • ???}????
  • }????
  • $p?=?new?Person();????
  • $p1?=?$p;?//設(shè)定新引用變量$p1也指向這個(gè)對象????
  • unset($p);????
  • echo?"是否看到/$p被銷毀,對象也被銷毀呢?";????
  • for?($i?=?0;?$i?<?5;?$i++)?{??
  • ???echo?"<br?/>?$i";????
  • }????
  • unset($p1);????
  • echo?"我們看到這里,析構(gòu)函數(shù)被執(zhí)行了";????
  • ?>???
  • unset一個(gè)引用變量時(shí),unset 銷毀的是指向?qū)ο蟮淖兞?#xff0c;而不是這個(gè)對象。


    來源:http://blog.csdn.net/klinghr/article/details/5208730

    總結(jié)

    以上是生活随笔為你收集整理的PHP类实例教程(七):析构函数与PHP的垃圾回收的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。