arrayObject_exchangeArray_basic3.phpt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. --TEST--
  2. SPL: ArrayObject::exchangeArray() basic usage with object as underlying data store.
  3. --FILE--
  4. <?php
  5. class C {
  6. public $pub1 = 'public1';
  7. }
  8. echo "--> exchangeArray() with objects:\n";
  9. $original = new C;
  10. $ao = new ArrayObject($original);
  11. $swapIn = new C;
  12. try {
  13. $copy = $ao->exchangeArray($swapIn);
  14. $copy['addedToCopy'] = 'added To Copy';
  15. } catch (Exception $e) {
  16. echo "Exception:" . $e->getMessage() . "\n";
  17. }
  18. $swapIn->addedToSwapIn = 'added To Swap-In';
  19. $original->addedToOriginal = 'added To Original';
  20. var_dump($ao, $original, $swapIn, $copy);
  21. echo "\n\n--> exchangeArray() with no arg:\n";
  22. unset($original, $ao, $swapIn, $copy);
  23. $original = new C;
  24. $ao = new ArrayObject($original);
  25. try {
  26. $copy = $ao->exchangeArray();
  27. $copy['addedToCopy'] = 'added To Copy';
  28. } catch (Exception $e) {
  29. echo "Exception:" . $e->getMessage() . "\n";
  30. }
  31. $original->addedToOriginal = 'added To Original';
  32. var_dump($ao, $original, $copy);
  33. echo "\n\n--> exchangeArray() with bad arg type:\n";
  34. unset($original, $ao, $swapIn, $copy);
  35. $original = new C;
  36. $ao = new ArrayObject($original);
  37. try {
  38. $copy = $ao->exchangeArray(null);
  39. $copy['addedToCopy'] = 'added To Copy';
  40. } catch (Exception $e) {
  41. echo "Exception:" . $e->getMessage() . "\n";
  42. }
  43. $original->addedToOriginal = 'added To Original';
  44. var_dump($ao, $original, $copy);
  45. ?>
  46. --EXPECTF--
  47. --> exchangeArray() with objects:
  48. object(ArrayObject)#2 (1) {
  49. ["storage":"ArrayObject":private]=>
  50. object(C)#3 (2) {
  51. ["pub1"]=>
  52. string(7) "public1"
  53. ["addedToSwapIn"]=>
  54. string(16) "added To Swap-In"
  55. }
  56. }
  57. object(C)#1 (2) {
  58. ["pub1"]=>
  59. string(7) "public1"
  60. ["addedToOriginal"]=>
  61. string(17) "added To Original"
  62. }
  63. object(C)#3 (2) {
  64. ["pub1"]=>
  65. string(7) "public1"
  66. ["addedToSwapIn"]=>
  67. string(16) "added To Swap-In"
  68. }
  69. array(2) {
  70. ["pub1"]=>
  71. string(7) "public1"
  72. ["addedToCopy"]=>
  73. string(13) "added To Copy"
  74. }
  75. --> exchangeArray() with no arg:
  76. Warning: ArrayObject::exchangeArray() expects exactly 1 parameter, 0 given in %s on line 27
  77. object(ArrayObject)#2 (1) {
  78. ["storage":"ArrayObject":private]=>
  79. object(C)#3 (2) {
  80. ["pub1"]=>
  81. string(7) "public1"
  82. ["addedToOriginal"]=>
  83. string(17) "added To Original"
  84. }
  85. }
  86. object(C)#3 (2) {
  87. ["pub1"]=>
  88. string(7) "public1"
  89. ["addedToOriginal"]=>
  90. string(17) "added To Original"
  91. }
  92. array(2) {
  93. ["pub1"]=>
  94. string(7) "public1"
  95. ["addedToCopy"]=>
  96. string(13) "added To Copy"
  97. }
  98. --> exchangeArray() with bad arg type:
  99. Exception:Passed variable is not an array or object, using empty array instead
  100. Notice: Undefined variable: copy in %s on line 46
  101. object(ArrayObject)#3 (1) {
  102. ["storage":"ArrayObject":private]=>
  103. object(C)#2 (2) {
  104. ["pub1"]=>
  105. string(7) "public1"
  106. ["addedToOriginal"]=>
  107. string(17) "added To Original"
  108. }
  109. }
  110. object(C)#2 (2) {
  111. ["pub1"]=>
  112. string(7) "public1"
  113. ["addedToOriginal"]=>
  114. string(17) "added To Original"
  115. }
  116. NULL