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

