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