這篇文章主要介紹PHP中弱引用的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)公司主打移動(dòng)網(wǎng)站、做網(wǎng)站、成都做網(wǎng)站、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、申請(qǐng)域名、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。
php的框架:1、Laravel,Laravel是一款免費(fèi)并且開源的PHP應(yīng)用框架。2、Phalcon,Phalcon是運(yùn)行速度最快的一個(gè)PHP框架。3、Symfony,Symfony是一款為Web項(xiàng)目準(zhǔn)備的PHP框架。4、Yii,Yii是一款快速、安全和專業(yè)的PHP框架。5、CodeIgniter,CodeIgniter是一款非常敏捷的開源PHP框架。6、CakePHP,CakePHP是一款老牌的PHP框架。7.Kohana,Kohana是一款敏捷但是功能強(qiáng)大的PHP框架。
我們知道,PHP 中沒有純引用(指針),不管是對(duì)象,還是用引用符號(hào) & 賦值的變量,都是對(duì)一個(gè)符號(hào)表的引用。而今天,我們要學(xué)習(xí)的是另一種引用形式:弱引用。
弱引用允許程序員保留對(duì)對(duì)象的引用,而該對(duì)象不會(huì)阻止對(duì)象被銷毀;它們對(duì)于實(shí)現(xiàn)類似緩存的結(jié)構(gòu)非常有用。
這是比較官方的解釋。從這個(gè)說明中,我們可以看出,弱引用也是一種引用形式,但是,如果我們銷毀了原來的對(duì)象,那么弱引用對(duì)象也會(huì)被銷毀,就像普通的值對(duì)象賦值一樣。
$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è)對(duì)象 \$obj 我們進(jìn)行直接的賦值引用,也就是 PHP 默認(rèn)的對(duì)象賦值。這時(shí)候,$weakref 保存的是對(duì)象符號(hào)表的引用。當(dāng)我們 unset() 掉 $obj 時(shí),$weakref 依然能夠正常使用。也就是說,$weakref 對(duì) $obj 原始對(duì)象的內(nèi)存引用依然保持著。不管我們?cè)趺?unset() 原始的 $obj ,都只是切斷了 $obj 的引用符號(hào)表,對(duì)真正的對(duì)象沒有影響,垃圾回收器也不會(huì)徹底的回收最最原始的 $obj 對(duì)象內(nèi)容。
第二個(gè)對(duì)象我們使用的是 WeakReference 的 create() 方法來創(chuàng)建的弱引用,當(dāng)我們銷毀 $obj1 后,$weakref 也會(huì)變成 NULL 。這就是弱引用的作用!
它可以讓垃圾回收器正常的回收,它可以避免循環(huán)引用帶來的內(nèi)存泄漏問題,它能讓引用表現(xiàn)為類似于 C 中的指針操作一樣。
最后一段代碼是我們通過 WeakReference::create() 中直接使用 new 來創(chuàng)建對(duì)象。這種形式是不行的,會(huì)一直返回 NULL 。因?yàn)槿跻檬峭ㄟ^變量來創(chuàng)建的,它指向的是原始對(duì)象的符號(hào)表,而變量和對(duì)象之間的符號(hào)表連接才是弱引用關(guān)心的內(nèi)容,它會(huì)根據(jù)符號(hào)表的狀態(tài)來判斷當(dāng)前的狀態(tài)。如果原始對(duì)象變量切斷了與符號(hào)表的連接,那么弱引用的變量也會(huì)同步切斷,這樣,垃圾回收器就能正常的清理這個(gè)已經(jīng)沒有任何引用計(jì)數(shù)的對(duì)象了。
這里需要注意的是,上面的測(cè)試代碼必須在 PHP7.4 及以上版本才有用,WeakReference 類是 PHP7.4 新增加的內(nèi)容。之前的版本需要安裝 WeakRef 這個(gè)擴(kuò)展才能實(shí)現(xiàn)弱引用的能力,具體的內(nèi)容可以查閱下方鏈接中的相關(guān)的文檔。
測(cè)試代碼:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E5%AD%A6%E4%B9%A0PHP%E5%BC%B1%E5%BC%95%E7%94%A8%E7%9A%84%E7%9F%A5%E8%AF%86.php
以上是“PHP中弱引用的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章題目:PHP中弱引用的示例分析
文章網(wǎng)址:http://chinadenli.net/article46/gehohg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、、服務(wù)器托管、全網(wǎng)營銷推廣、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)