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
廣告