arrayObject_clone_basic3.phpt 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. --TEST--
  2. SPL: Cloning nested ArrayObjects.
  3. --FILE--
  4. <?php
  5. class C {
  6. public $p = 'C::p.orig';
  7. }
  8. $wrappedObject = new C;
  9. $innerArrayObject = new ArrayObject($wrappedObject);
  10. $outerArrayObject = new ArrayObject($innerArrayObject);
  11. $wrappedObject->dynamic1 = 'new prop added to $wrappedObject before clone';
  12. $clonedOuterArrayObject = clone $outerArrayObject;
  13. $wrappedObject->dynamic2 = 'new prop added to $wrappedObject after clone';
  14. $innerArrayObject['new.iAO'] = 'new element added $innerArrayObject';
  15. $outerArrayObject['new.oAO'] = 'new element added to $outerArrayObject';
  16. $clonedOuterArrayObject['new.coAO'] = 'new element added to $clonedOuterArrayObject';
  17. var_dump($wrappedObject, $innerArrayObject, $outerArrayObject, $clonedOuterArrayObject);
  18. ?>
  19. --EXPECT--
  20. object(C)#1 (5) {
  21. ["p"]=>
  22. string(9) "C::p.orig"
  23. ["dynamic1"]=>
  24. string(45) "new prop added to $wrappedObject before clone"
  25. ["dynamic2"]=>
  26. string(44) "new prop added to $wrappedObject after clone"
  27. ["new.iAO"]=>
  28. string(35) "new element added $innerArrayObject"
  29. ["new.oAO"]=>
  30. string(38) "new element added to $outerArrayObject"
  31. }
  32. object(ArrayObject)#2 (1) {
  33. ["storage":"ArrayObject":private]=>
  34. object(C)#1 (5) {
  35. ["p"]=>
  36. string(9) "C::p.orig"
  37. ["dynamic1"]=>
  38. string(45) "new prop added to $wrappedObject before clone"
  39. ["dynamic2"]=>
  40. string(44) "new prop added to $wrappedObject after clone"
  41. ["new.iAO"]=>
  42. string(35) "new element added $innerArrayObject"
  43. ["new.oAO"]=>
  44. string(38) "new element added to $outerArrayObject"
  45. }
  46. }
  47. object(ArrayObject)#3 (1) {
  48. ["storage":"ArrayObject":private]=>
  49. object(ArrayObject)#2 (1) {
  50. ["storage":"ArrayObject":private]=>
  51. object(C)#1 (5) {
  52. ["p"]=>
  53. string(9) "C::p.orig"
  54. ["dynamic1"]=>
  55. string(45) "new prop added to $wrappedObject before clone"
  56. ["dynamic2"]=>
  57. string(44) "new prop added to $wrappedObject after clone"
  58. ["new.iAO"]=>
  59. string(35) "new element added $innerArrayObject"
  60. ["new.oAO"]=>
  61. string(38) "new element added to $outerArrayObject"
  62. }
  63. }
  64. }
  65. object(ArrayObject)#4 (1) {
  66. ["storage":"ArrayObject":private]=>
  67. array(3) {
  68. ["p"]=>
  69. string(9) "C::p.orig"
  70. ["dynamic1"]=>
  71. string(45) "new prop added to $wrappedObject before clone"
  72. ["new.coAO"]=>
  73. string(44) "new element added to $clonedOuterArrayObject"
  74. }
  75. }