026.phpt 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. --TEST--
  2. correct instantiation of references between variables in sessions
  3. --EXTENSIONS--
  4. session
  5. --SKIPIF--
  6. <?php include('skipif.inc'); ?>
  7. --INI--
  8. session.use_cookies=0
  9. session.use_strict_mode=0
  10. session.cache_limiter=
  11. session.serialize_handler=php
  12. session.save_handler=files
  13. --FILE--
  14. <?php
  15. error_reporting(E_ALL);
  16. ob_start();
  17. session_id("test026");
  18. session_start();
  19. class a {
  20. public $test = "hallo";
  21. }
  22. class b {
  23. public $a;
  24. function __construct(&$a) {
  25. $this->a = &$a;
  26. }
  27. }
  28. $a = new a();
  29. $b = new b($a);
  30. echo "original values:\n";
  31. var_dump($a,$b);
  32. $_SESSION['a'] = $a;
  33. $_SESSION['b'] = $b;
  34. session_write_close();
  35. unset($_SESSION['a']);
  36. unset($_SESSION['b']);
  37. session_start();
  38. $a = $_SESSION['a'];
  39. $b = $_SESSION['b'];
  40. echo "values after session:\n";
  41. var_dump($a,$b);
  42. session_destroy();
  43. ?>
  44. --EXPECTF--
  45. original values:
  46. object(a)#%d (1) {
  47. ["test"]=>
  48. string(5) "hallo"
  49. }
  50. object(b)#%d (1) {
  51. ["a"]=>
  52. &object(a)#%d (1) {
  53. ["test"]=>
  54. string(5) "hallo"
  55. }
  56. }
  57. values after session:
  58. object(a)#%d (1) {
  59. ["test"]=>
  60. string(5) "hallo"
  61. }
  62. object(b)#%d (1) {
  63. ["a"]=>
  64. &object(a)#%d (1) {
  65. ["test"]=>
  66. string(5) "hallo"
  67. }
  68. }