006.phpt 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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("test006");
  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"], $_SESSION["b"]);
  36. session_start();
  37. echo "values after session:\n";
  38. var_dump($a,$b);
  39. session_destroy();
  40. ?>
  41. --EXPECTF--
  42. original values:
  43. object(a)#%d (1) {
  44. ["test"]=>
  45. string(5) "hallo"
  46. }
  47. object(b)#%d (1) {
  48. ["a"]=>
  49. &object(a)#%d (1) {
  50. ["test"]=>
  51. string(5) "hallo"
  52. }
  53. }
  54. values after session:
  55. object(a)#%d (1) {
  56. ["test"]=>
  57. string(5) "hallo"
  58. }
  59. object(b)#%d (1) {
  60. ["a"]=>
  61. &object(a)#%d (1) {
  62. ["test"]=>
  63. string(5) "hallo"
  64. }
  65. }