1--TEST-- 2Self-referencing map entry GC - 005 3--FILE-- 4<?php 5 6class Value { 7 public function __construct(public readonly string $value) { 8 } 9} 10 11$map = new WeakMap(); 12$obj = new Value('a'); 13$value = [$obj]; 14$map[$obj] = $value; 15$obj = null; 16 17gc_collect_cycles(); 18 19var_dump($map); 20 21gc_collect_cycles(); 22 23$value = null; 24 25gc_collect_cycles(); 26 27var_dump($map); 28 29--EXPECTF-- 30object(WeakMap)#%d (1) { 31 [0]=> 32 array(2) { 33 ["key"]=> 34 object(Value)#%d (1) { 35 ["value"]=> 36 string(1) "a" 37 } 38 ["value"]=> 39 array(1) { 40 [0]=> 41 object(Value)#%d (1) { 42 ["value"]=> 43 string(1) "a" 44 } 45 } 46 } 47} 48object(WeakMap)#1 (0) { 49} 50