arrayObject_exchangeArray_basic3.phpt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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 (TypeError $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 (TypeError $e) {
  41. echo $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. Exception: ArrayObject::exchangeArray() expects exactly 1 argument, 0 given
  77. Warning: Undefined variable $copy in %s on line %d
  78. object(ArrayObject)#2 (1) {
  79. ["storage":"ArrayObject":private]=>
  80. object(C)#3 (2) {
  81. ["pub1"]=>
  82. string(7) "public1"
  83. ["addedToOriginal"]=>
  84. string(17) "added To Original"
  85. }
  86. }
  87. object(C)#3 (2) {
  88. ["pub1"]=>
  89. string(7) "public1"
  90. ["addedToOriginal"]=>
  91. string(17) "added To Original"
  92. }
  93. NULL
  94. --> exchangeArray() with bad arg type:
  95. ArrayObject::exchangeArray(): Argument #1 ($array) must be of type array, null given
  96. Warning: Undefined variable $copy in %s on line %d
  97. object(ArrayObject)#3 (1) {
  98. ["storage":"ArrayObject":private]=>
  99. object(C)#2 (2) {
  100. ["pub1"]=>
  101. string(7) "public1"
  102. ["addedToOriginal"]=>
  103. string(17) "added To Original"
  104. }
  105. }
  106. object(C)#2 (2) {
  107. ["pub1"]=>
  108. string(7) "public1"
  109. ["addedToOriginal"]=>
  110. string(17) "added To Original"
  111. }
  112. NULL