weakmap_multiple_weakrefs.phpt 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. --TEST--
  2. Multiple WeakMaps / WeakRefs on the same object
  3. --FILE--
  4. <?php
  5. $obj = new stdClass;
  6. $ref = WeakReference::create($obj);
  7. $map = new WeakMap;
  8. $map[$obj] = 1;
  9. $map2 = new WeakMap;
  10. $map2[$obj] = 1;
  11. $map3 = clone $map2;
  12. var_dump($ref === WeakReference::create($obj));
  13. var_dump($ref->get(), $map, $map2, $map3);
  14. unset($obj);
  15. var_dump($ref->get(), $map, $map2, $map3);
  16. unset($ref, $map, $map2);
  17. $obj = new stdClass;
  18. $ref = WeakReference::create($obj);
  19. $map = new WeakMap;
  20. $map[$obj] = 1;
  21. $map2 = new WeakMap;
  22. $map2[$obj] = 1;
  23. $map3 = clone $map2;
  24. unset($ref, $map, $map2, $map3);
  25. var_dump($obj);
  26. unset($obj);
  27. ?>
  28. --EXPECT--
  29. bool(true)
  30. object(stdClass)#1 (0) {
  31. }
  32. object(WeakMap)#3 (1) {
  33. [0]=>
  34. array(2) {
  35. ["key"]=>
  36. object(stdClass)#1 (0) {
  37. }
  38. ["value"]=>
  39. int(1)
  40. }
  41. }
  42. object(WeakMap)#4 (1) {
  43. [0]=>
  44. array(2) {
  45. ["key"]=>
  46. object(stdClass)#1 (0) {
  47. }
  48. ["value"]=>
  49. int(1)
  50. }
  51. }
  52. object(WeakMap)#5 (1) {
  53. [0]=>
  54. array(2) {
  55. ["key"]=>
  56. object(stdClass)#1 (0) {
  57. }
  58. ["value"]=>
  59. int(1)
  60. }
  61. }
  62. NULL
  63. object(WeakMap)#3 (0) {
  64. }
  65. object(WeakMap)#4 (0) {
  66. }
  67. object(WeakMap)#5 (0) {
  68. }
  69. object(stdClass)#4 (0) {
  70. }