电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

PHP 弱引用的相關(guān)總結(jié)

瀏覽:110日期:2022-09-07 14:13:01

之前的文章中,我們已經(jīng)學(xué)習(xí)過引用和引用傳值相關(guān)的知識。我們知道,PHP 中沒有純引用(指針),不管是對象,還是用引用符號 & 賦值的變量,都是對一個(gè)符號表的引用。而今天,我們要學(xué)習(xí)的是另一種引用形式:弱引用。

什么是弱引用

弱引用允許程序員保留對對象的引用,而該對象不會阻止對象被銷毀;它們對于實(shí)現(xiàn)類似緩存的結(jié)構(gòu)非常有用。

這是比較官方的解釋。從這個(gè)說明中,我們可以看出,弱引用也是一種引用形式,但是,如果我們銷毀了原來的對象,那么弱引用對象也會被銷毀,就像普通的值對象賦值一樣。如果沒有看過之前的文章,或者對 PHP 中的引用不太熟悉的朋友可能需要再了解一下 PHP 中引用相關(guān)的知識。下面,我們直接通過示例來看一下。

WeakReference

$obj = new stdClass;$weakref = $obj;var_dump($weakref);// object(stdClass)#1 (0) {// }unset($obj);var_dump($weakref);// object(stdClass)#1 (0) {// }$obj1 = new stdClass;$weakref = WeakReference::create($obj1);var_dump($weakref->get());// object(stdClass)#2 (0) {// }unset($obj1);var_dump($weakref->get());// NULL$weakref = WeakReference::create(new stdClass);var_dump($weakref->get());// NULL

第一個(gè)對象 $obj 我們進(jìn)行直接的賦值引用,也就是 PHP 默認(rèn)的對象賦值。這時(shí)候,$weakref 保存的是對象符號表的引用。當(dāng)我們 unset() 掉 $obj 時(shí),$weakref 依然能夠正常使用。也就是說,$weakref 對 $obj 原始對象的內(nèi)存引用依然保持著。不管我們怎么 unset() 原始的 $obj ,都只是切斷了 $obj 的引用符號表,對真正的對象沒有影響,垃圾回收器也不會徹底的回收最最原始的 $obj 對象內(nèi)容。

第二個(gè)對象我們使用的是 WeakReference 的 create() 方法來創(chuàng)建的弱引用,當(dāng)我們銷毀 $obj1 后,$weakref 也會變成 NULL 。這就是弱引用的作用!

它可以讓垃圾回收器正常的回收,它可以避免循環(huán)引用帶來的內(nèi)存泄漏問題,它能讓引用表現(xiàn)為類似于 C 中的指針操作一樣。

最后一段代碼是我們通過 WeakReference::create() 中直接使用 new 來創(chuàng)建對象。這種形式是不行的,會一直返回 NULL 。因?yàn)槿跻檬峭ㄟ^變量來創(chuàng)建的,它指向的是原始對象的符號表,而變量和對象之間的符號表連接才是弱引用關(guān)心的內(nèi)容,它會根據(jù)符號表的狀態(tài)來判斷當(dāng)前的狀態(tài)。如果原始對象變量切斷了與符號表的連接,那么弱引用的變量也會同步切斷,這樣,垃圾回收器就能正常的清理這個(gè)已經(jīng)沒有任何引用計(jì)數(shù)的對象了。

注意

這里需要注意的是,上面的測試代碼必須在 PHP7.4 及以上版本才有用,WeakReference 類是 PHP7.4 新增加的內(nèi)容。之前的版本需要安裝 WeakRef 這個(gè)擴(kuò)展才能實(shí)現(xiàn)弱引用的能力,具體的內(nèi)容可以查閱下方鏈接中的相關(guān)的文檔。

測試代碼:

https://github.com/zhangyue0503...

以上就是PHP 弱引用的相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于PHP 弱引用的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 桁架楼承板-钢筋桁架楼承板-江苏众力达钢筋楼承板厂 | 沈阳建筑设计公司_加固改造设计_厂房设计_设计资质加盟【金辉设计】 | 离子色谱自动进样器-青岛艾力析实验科技有限公司 | 123悬赏网_发布悬赏任务_广告任务平台 | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 | 混合反应量热仪-高温高压量热仪-微机差热分析仪DTA|凯璞百科 | 水上浮桥-游艇码头-浮动码头-游船码头-码瑞纳游艇码头工程 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 | 彩信群发_群发彩信软件_视频短信营销平台-达信通 | 达利园物流科技集团-| 振动时效_振动时效仪_超声波冲击设备-济南驰奥机电设备有限公司 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 天命文免费算命堂_自助算命_自由算命系统_长文周易 | 硫化罐-电加热蒸汽硫化罐生产厂家-山东鑫泰鑫智能装备有限公司 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 茶楼装修设计_茶馆室内设计效果图_云臻轩茶楼装饰公司 | 泰国试管婴儿_泰国第三代试管婴儿_泰国试管婴儿费用/多少钱_孕泰来 | 南京和瑞包装有限公司| 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 河南中专学校|职高|技校招生-河南中职中专网 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 上海软件开发-上海软件公司-软件外包-企业软件定制开发公司-咏熠科技 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 华溶溶出仪-Memmert稳定箱-上海协烁仪器科技有限公司 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 铜镍-康铜-锰铜-电阻合金-NC003 - 杭州兴宇合金有限公司 | 泰安塞纳春天装饰公司【网站】| 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 |