首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
时间日期概述
关于UNIX时间戳
获取当前时间戳
获取当前日期和时间
使用时间戳获取日期信息
检验日期的有效性
输出格式化时间戳的日期和时间
显示本地化的日期和时间
将日期和时间解析为UNIX时间戳
PHP和MySQL之间的转换
实战演练1—比较两个时间的大小
实战演练2—实现倒计时功能
类和对象的介绍
PHP中类的操作
成员属性
成员方法
类的实例化
访问类中的成员属性和方法
构造方法和析构方法
访问方法
类的继承
静态属性和方法
final类和方法
抽象类
接口
面向对象的多态性
匿名类
PHP 8的新变化1—使用Attributes(注解)
PHP 8的新变化2—支持static返回类型
PHP 8的新变化3—新增WeakMap特性
PHP 8的新变化4—提升构造器属性
PHP 8的新变化5—空安全运算符
PHP 8的新变化6—新增Stringable接口
PHP 8的新变化7—重写方法时允许可变参数
当前位置:
首页>>
技术小册>>
PHP8入门与项目实战(4)
小册名称:PHP8入门与项目实战(4)
PHP 8新增WeakMap特性,也就是常说的弱映射。WeakMap允许创建对象到任意值的映射,同时也不会阻止作为键的对象被垃圾回收。如果某个对象键被垃圾回收,对应键值对将从集合中移除。这一新特性非常有用,因为这样一来,开发者就不必担心代码存在内存泄露了。弱映射通常使用在将数据与单个对象实例关联起来,而不强制它们保持活动状态,引用的对象会在失效时自动被垃圾回收。 下面通过实例来理解WeakMap特性。 首先定义一个商品类和库房的类,然后看数组中使用情况。 ![](/uploads/images/20231208/3effa651bf9ebef67b2b1ef04144e9d1.png) 运行程序输出结果如下: ```php 2 2 剃须刀 ``` 从结果可以看出,在使用数组时,将商品实例加入库房时,加入的是其克隆体,所以两者互相没有什么干扰。这里虽然使用了unset($shaver),但是没有对数组中的值产生了什么影响。 如果想实现当对应的商品实例消失的时候,对其引用的类能自动感知。就像商品和库房的关系,如果商品销毁了,比如unset($shaver),则对应的库房会被清除出来。注意这里把库房清除时,对应的商品是没事的,依旧存在。 下面就通过WeakMap来实现上述功能。代码如下: ![](/uploads/images/20231208/92eb1795857835869e31ea736cf186fc.png) 运行程序输出结果如下: ```php 2 1 ```
上一篇:
PHP 8的新变化2—支持static返回类型
下一篇:
PHP 8的新变化4—提升构造器属性
该分类下的相关小册推荐:
Laravel(10.x)从入门到精通(七)
Laravel(10.x)从入门到精通(六)
Laravel(10.x)从入门到精通(八)
全面构建Magento2电商系统
Swoole高性能框架-SwooleWorker
Laravel(10.x)从入门到精通(十八)
PHP安全之道
Laravel(10.x)从入门到精通(十二)
全栈工程师修炼指南
Magento零基础到架构师(目录管理)
Magento零基础到架构师(库存管理)
Magento中文全栈二次开发