婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP 弱引用的相關總結

PHP 弱引用的相關總結

熱門標簽:注冊400電話申請 百度商鋪地圖標注 新河科技智能外呼系統怎么樣 安裝電銷外呼系統 衡水外呼系統平臺 地圖標注平臺怎么給錢注冊 常州地圖標注服務商 福州人工外呼系統哪家強 釘釘打卡地圖標注

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

什么是弱引用

弱引用允許程序員保留對對象的引用,而該對象不會阻止對象被銷毀;它們對于實現類似緩存的結構非常有用。

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

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

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

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

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

最后一段代碼是我們通過 WeakReference::create() 中直接使用 new 來創建對象。這種形式是不行的,會一直返回 NULL 。因為弱引用是通過變量來創建的,它指向的是原始對象的符號表,而變量和對象之間的符號表連接才是弱引用關心的內容,它會根據符號表的狀態來判斷當前的狀態。如果原始對象變量切斷了與符號表的連接,那么弱引用的變量也會同步切斷,這樣,垃圾回收器就能正常的清理這個已經沒有任何引用計數的對象了。

注意

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

測試代碼:

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

以上就是PHP 弱引用的相關總結的詳細內容,更多關于PHP 弱引用的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP 引用的概念
  • 詳解PHP的引用計數
  • php的對象傳值與引用傳值代碼實例講解
  • php傳值和傳引用的區別點總結
  • php 多個變量指向同一個引用($b = &$a)用法分析
  • php引用和拷貝的區別知識點總結
  • php中對象引用和復制實例分析
  • PHP實現無限極分類的兩種方式示例【遞歸和引用方式】
  • PHP中引用類型和值類型功能與用法示例

標簽:克拉瑪依 鷹潭 六安 柳州 唐山 鶴崗 遼陽 白城

巨人網絡通訊聲明:本文標題《PHP 弱引用的相關總結》,本文關鍵詞  PHP,弱引,用的,相關,總結,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP 弱引用的相關總結》相關的同類信息!
  • 本頁收集關于PHP 弱引用的相關總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 正安县| 伊吾县| 襄垣县| 汝南县| 巫山县| 威远县| 斗六市| 冷水江市| 隆德县| 华蓥市| 保康县| 湘潭县| 无为县| 龙口市| 随州市| 大洼县| 蕉岭县| 获嘉县| 新野县| 江都市| 措美县| 班戈县| 东港市| 平潭县| 巴楚县| 杂多县| 剑河县| 休宁县| 如东县| 太湖县| 崇礼县| 玛纳斯县| 疏附县| 准格尔旗| 康平县| 桃源县| 佛坪县| 丰台区| 甘泉县| 清河县| 邮箱|