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次浏览

开启你的 职业生涯

完成课程并获得认证

开始
广告
© . All rights reserved.