observer_004.phpt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. --TEST--
  2. SPL: SplObjectStorage serialization & overloading
  3. --FILE--
  4. <?php
  5. class TestClass
  6. {
  7. public $test = 25;
  8. public function __construct($test = 42)
  9. {
  10. $this->test = $test;
  11. }
  12. }
  13. class MyStorage extends SplObjectStorage
  14. {
  15. public $bla = 25;
  16. public function __construct($bla = 26)
  17. {
  18. $this->bla = $bla;
  19. }
  20. }
  21. $storage = new MyStorage();
  22. foreach(array(1,2) as $value)
  23. {
  24. $storage->attach(new TestClass($value));
  25. }
  26. var_dump(count($storage));
  27. foreach($storage as $object)
  28. {
  29. var_dump($object->test);
  30. }
  31. var_dump($storage);
  32. var_dump(serialize($storage));
  33. echo "===UNSERIALIZE===\n";
  34. $storage2 = unserialize(serialize($storage));
  35. var_dump(count($storage2));
  36. foreach($storage2 as $object)
  37. {
  38. var_dump($object->test);
  39. }
  40. var_dump($storage2);
  41. ?>
  42. --EXPECTF--
  43. int(2)
  44. int(1)
  45. int(2)
  46. object(MyStorage)#%d (2) {
  47. ["bla"]=>
  48. int(26)
  49. ["storage":"SplObjectStorage":private]=>
  50. array(2) {
  51. [0]=>
  52. array(2) {
  53. ["obj"]=>
  54. object(TestClass)#%d (1) {
  55. ["test"]=>
  56. int(1)
  57. }
  58. ["inf"]=>
  59. NULL
  60. }
  61. [1]=>
  62. array(2) {
  63. ["obj"]=>
  64. object(TestClass)#%d (1) {
  65. ["test"]=>
  66. int(2)
  67. }
  68. ["inf"]=>
  69. NULL
  70. }
  71. }
  72. }
  73. string(%d) "%s"
  74. ===UNSERIALIZE===
  75. int(2)
  76. int(1)
  77. int(2)
  78. object(MyStorage)#%d (2) {
  79. ["bla"]=>
  80. int(26)
  81. ["storage":"SplObjectStorage":private]=>
  82. array(2) {
  83. [0]=>
  84. array(2) {
  85. ["obj"]=>
  86. object(TestClass)#%d (1) {
  87. ["test"]=>
  88. int(1)
  89. }
  90. ["inf"]=>
  91. NULL
  92. }
  93. [1]=>
  94. array(2) {
  95. ["obj"]=>
  96. object(TestClass)#%d (1) {
  97. ["test"]=>
  98. int(2)
  99. }
  100. ["inf"]=>
  101. NULL
  102. }
  103. }
  104. }