PHP WeakReference类

介绍

使用弱引用,可以保留对对象的引用,这不会阻止对象被破坏。可以通过弱引用来实现类似缓存的结构。

弱引用类似于普通引用,不同之处在于它不会阻止垃圾收集器收集对象。如果找不到对该对象的强引用,则它将立即从内存中删除。这样,可以实现高速缓存的大多数优点,而不会出现内存问题。

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

语法

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

方法

public WeakReference::__ construct(void) —禁止实例化WeakReference类。可以使用工厂方法WeakReference::create()实例化它。

公共静态WeakReference::create(对象$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