026.phpt 1.1 KB

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