https://www.php.net/manual/en/class.weakmap.php个
那埃努姆斯呢?
你能做到的
enum MyEnum{
case A;
}
$wm = new WeakMap();
$wm[MyEnum::A] = 'something';
什么时候?
$wm[MyEnum::A]
人变得隐形?还是无法接近?如果永远都不会呢?
我说的不是$wm
个.假设$wm
总是在那里.
https://www.php.net/manual/en/class.weakmap.php个
那埃努姆斯呢?
你能做到的
enum MyEnum{
case A;
}
$wm = new WeakMap();
$wm[MyEnum::A] = 'something';
什么时候?
$wm[MyEnum::A]
人变得隐形?还是无法接近?如果永远都不会呢?
我说的不是$wm
个.假设$wm
总是在那里.
Php中的enum只是一个带有几个常量的(特殊)类,这一点很容易验证:
enum MyEnum { case A; }
// enum(MyEnum::A)
// string(6) "object"
var_dump(
(new ReflectionClass(MyEnum::class))->getConstant('A'),
gettype(MyEnum::A));
因为没有人可以取消设置常量或更改它的值,所以至少有一个对枚举对象的引用,所以WeakMap中的条目将一直保留,直到有人手动取消它.