PHP 中的弱映射是什么?
弱映射已添加到 PHP 7.4 中。它可用于在缓存引用对象实体类时删除或删除对象。它引用这些对象,不会避免内存垃圾回收对象。在 PHP 8 中,弱映射允许我们存储链接到对象的随机数据,而不会泄漏任何内存。
换句话说,PHP 8 中的弱映射是一组对象,其中键弱引用。弱映射使用类创建一个可作为键使用的对象,这有助于在没有进一步引用时删除和销毁弱映射。从长远来看,它可以避免内存泄漏,从而最终提高性能。
我们可以说弱映射作为自动垃圾回收过程。每当删除变量时,PHP 会检查是否有任何变量仍引用该对象。如果变量没有引用,则 PHP 将安全地删除该对象。此过程称为垃圾回收。
示例:PHP 8 弱映射
<?php
class WeakExample {
public WeakMap $cache;
public function __construct() {
$this->cache = new WeakMap();
}
public function getCaching(object $obj) {
return $this->cache[$obj] ??= $this->computeSomethingExpensive($obj);
}
public function computeSomethingExpensive(object $obj) {
print_r("Object called");
return rand(1, 100);
}
}
$cacheObject = new stdClass;
$obj = new WeakExample;
$obj->getCaching($cacheObject);
$obj->getCaching($cacheObject);
print_r(count($obj->cache));
unset($cacheObject); // unsetting the objects and Weak Maps frees up memory
print_r(count($obj->cache));
?>输出
Object called 1 0
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP