PHP WeakReference 类

phpserver side programmingprogramming更新于 2025/8/19 4:07:17

简介

使用弱引用,可以保留对对象的引用,而不会阻止该对象被销毁。弱引用可以实现类似缓存的结构。

弱引用与普通引用类似,不同之处在于它不会阻止垃圾收集器收集对象。如果未找到对该对象的强引用,它将立即从内存中删除。通过这种方式,可以实现缓存的大部分优势,而不会出现内存问题。

WeakReference 类已在 PHP 7.4 中引入。在此版本之前,使用 weakref 扩展可以获得相同的效果。WeakReference 类具有以下结构

语法

WeakReference {
  /* 方法 */
   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 —创建一个新的弱引用。

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

相关文章