bug80411.phpt 771 B

1234567891011121314151617181920212223242526272829303132
  1. --TEST--
  2. Bug #80411: References to null-serialized object break serialize()
  3. --FILE--
  4. <?php
  5. class UnSerializable implements Serializable
  6. {
  7. public function serialize() {}
  8. public function unserialize($serialized) {}
  9. }
  10. $unser = new UnSerializable();
  11. $arr = [$unser];
  12. $arr[1] = &$arr[0];
  13. $arr[2] = 'endcap';
  14. $arr[3] = &$arr[2];
  15. $data = serialize($arr);
  16. echo $data . PHP_EOL;
  17. $recovered = unserialize($data);
  18. var_export($recovered);
  19. ?>
  20. --EXPECTF--
  21. Deprecated: %s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
  22. a:4:{i:0;N;i:1;N;i:2;s:6:"endcap";i:3;R:4;}
  23. array (
  24. 0 => NULL,
  25. 1 => NULL,
  26. 2 => 'endcap',
  27. 3 => 'endcap',
  28. )