PHP WeakReference 類


引言

藉助弱引用,可以保留對物件進行參考,而不會阻止物件被銷燬。可以透過弱引用實現快取等結構。

弱引用類似於普通引用,不同之處在於它不會阻止垃圾收集器收集物件。如果找不到對該物件的強引用,它將立即從記憶體中刪除。這樣,可以實現快取的大部分優點,而不會出現記憶體問題。

WeakReference 類在 PHP 7.4 中引入。在此版本之前,可透過 weakref 擴充套件實現相同的效果。WeakReference 類具備以下結構

語法

WeakReference {
   /* Methods */
   public __construct ( void )
   public static create ( object $referent ) : WeakReference
   public get ( void ) : ?object
}

方法

public WeakReference::__construct ( void ) — 拒絕例項化 WeakReference 類。它可以透過工廠方法 WeakReference::create() 例項化。

public static WeakReference::create ( object $referent ) : WeakReference — 建立一個新的 WeakReference。

public WeakReference::get ( void ) : ?object — 獲取弱引用物件。如果物件已銷燬,則返回 NULL。

生成器示例

以下示例提供 myclass 物件。對該物件的 WeakReference 顯示一個引用。然後取消設定物件。現在 WeakReference 會返回 NULL

示例

<?php
class myclass{
   function Hello(){
      echo "Hello";
   }
}
$obj = new myclass();
$ref = WeakReference::create($obj);
var_dump($ref->get());
unset($obj);
var_dump($ref->get());
?>

輸出

上述程式顯示以下輸出

object(myclass)#1 (0) {
}
NULL

更新於: 2020 年 9 月 21 日

368次瀏覽

開啟你的 職業生涯

完成課程並獲得認證

開始
廣告