arrayObject___construct_basic2.phpt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. --TEST--
  2. SPL: ArrayObject::__construct basic usage.
  3. --FILE--
  4. <?php
  5. class C {
  6. public $prop = 'C::prop.orig';
  7. }
  8. class MyArrayObject extends ArrayObject {
  9. public $prop = 'MyArrayObject::prop.orig';
  10. }
  11. echo "--> Access prop on instance of ArrayObject:\n";
  12. $c = new C;
  13. $ao = new ArrayObject($c);
  14. testAccess($c, $ao);
  15. echo "\n--> Access prop on instance of MyArrayObject:\n";
  16. $c = new C;
  17. $ao = new MyArrayObject($c);
  18. testAccess($c, $ao);
  19. function testAccess($c, $ao) {
  20. echo " - Iteration:\n";
  21. foreach ($ao as $key=>$value) {
  22. echo " $key=>$value\n";
  23. }
  24. echo " - Read:\n";
  25. @var_dump($ao->prop, $ao['prop']);
  26. echo " - Write:\n";
  27. $ao->prop = 'changed1';
  28. $ao['prop'] = 'changed2';
  29. var_dump($ao->prop, $ao['prop']);
  30. echo " - Isset:\n";
  31. var_dump(isset($ao->prop), isset($ao['prop']));
  32. echo " - Unset:\n";
  33. unset($ao->prop);
  34. unset($ao['prop']);
  35. var_dump($ao->prop, $ao['prop']);
  36. echo " - After:\n";
  37. var_dump($ao, $c);
  38. }
  39. ?>
  40. --EXPECTF--
  41. --> Access prop on instance of ArrayObject:
  42. - Iteration:
  43. prop=>C::prop.orig
  44. - Read:
  45. NULL
  46. string(12) "C::prop.orig"
  47. - Write:
  48. string(8) "changed1"
  49. string(8) "changed2"
  50. - Isset:
  51. bool(true)
  52. bool(true)
  53. - Unset:
  54. Warning: Undefined property: ArrayObject::$prop in %s on line %d
  55. Warning: Undefined array key "prop" in %s on line %d
  56. NULL
  57. NULL
  58. - After:
  59. object(ArrayObject)#2 (1) {
  60. ["storage":"ArrayObject":private]=>
  61. object(C)#1 (0) {
  62. }
  63. }
  64. object(C)#1 (0) {
  65. }
  66. --> Access prop on instance of MyArrayObject:
  67. - Iteration:
  68. prop=>C::prop.orig
  69. - Read:
  70. string(24) "MyArrayObject::prop.orig"
  71. string(12) "C::prop.orig"
  72. - Write:
  73. string(8) "changed1"
  74. string(8) "changed2"
  75. - Isset:
  76. bool(true)
  77. bool(true)
  78. - Unset:
  79. Warning: Undefined property: MyArrayObject::$prop in %s on line %d
  80. Warning: Undefined array key "prop" in %s on line %d
  81. NULL
  82. NULL
  83. - After:
  84. object(MyArrayObject)#3 (1) {
  85. ["storage":"ArrayObject":private]=>
  86. object(C)#4 (0) {
  87. }
  88. }
  89. object(C)#4 (0) {
  90. }