ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
弱引用允许程序员保留对对象的引用,而该对象不会阻止对象被销毁;它们对于实现类似缓存的结构非常有用。它们目前在PHP中得到了扩展支持。 在php7.4以前WeakRef实现都是通过重载对象处理程序来实现的,最流行的实现(pecl-weakref)改变了分配给只读内存的堆栈,PHP 7.3将使其不可用。以其他方式更改对象处理程序的其他实现也存在出现故障的风险,并且依赖于未定义的行为和抛弃一致性。 PHP 7.4 引入了WeakReference (弱引用)类型(也就是说php7.4无需此扩展了) 安装:[https://pecl.php.net/package/weakref](https://pecl.php.net/package/weakref). Example#1 Weakref用法示例 ``` <?php class MyClass { public function __destruct() { echo "Destroying object!\n"; } } $o1 = new MyClass; $r1 = new Weakref($o1); if ($r1->valid()) { echo "Object still exists!\n"; var_dump($r1->get()); } else { echo "Object is dead!\n"; } unset($o1); if ($r1->valid()) { echo "Object still exists!\n"; var_dump($r1->get()); } else { echo "Object is dead!\n"; } ?> 上面的示例将输出: Object still exists! object(MyClass)#1 (0) {} Destroying object! Object is dead! ```