unset_prop_recursion.phpt 1007 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. --TEST--
  2. Unset property where unset will recursively access property again
  3. --FILE--
  4. <?php
  5. class Node {
  6. public $parent = null;
  7. public $children = [];
  8. function insert(Node $node) {
  9. $node->parent = $this;
  10. $this->children[] = $node;
  11. }
  12. function __destruct() {
  13. var_dump($this);
  14. unset($this->children);
  15. }
  16. }
  17. $a = new Node;
  18. $a->insert(new Node);
  19. $a->insert(new Node);
  20. ?>
  21. --EXPECT--
  22. object(Node)#1 (2) {
  23. ["parent"]=>
  24. NULL
  25. ["children"]=>
  26. array(2) {
  27. [0]=>
  28. object(Node)#2 (2) {
  29. ["parent"]=>
  30. *RECURSION*
  31. ["children"]=>
  32. array(0) {
  33. }
  34. }
  35. [1]=>
  36. object(Node)#3 (2) {
  37. ["parent"]=>
  38. *RECURSION*
  39. ["children"]=>
  40. array(0) {
  41. }
  42. }
  43. }
  44. }
  45. object(Node)#2 (2) {
  46. ["parent"]=>
  47. object(Node)#1 (2) {
  48. ["parent"]=>
  49. NULL
  50. }
  51. ["children"]=>
  52. array(0) {
  53. }
  54. }
  55. object(Node)#3 (2) {
  56. ["parent"]=>
  57. object(Node)#1 (2) {
  58. ["parent"]=>
  59. NULL
  60. }
  61. ["children"]=>
  62. array(0) {
  63. }
  64. }