Annotation of embedaddon/php/ext/session/tests/005.phpt, revision 1.1.1.2
1.1 misho 1: --TEST--
2: custom save handler, multiple session_start()s, complex data structure test.
3: --SKIPIF--
4: <?php include('skipif.inc'); ?>
5: --INI--
6: session.use_cookies=0
7: session.cache_limiter=
8: session.name=PHPSESSID
9: session.serialize_handler=php
10: --FILE--
11: <?php
12:
13: error_reporting(E_ALL);
14:
15: class handler {
16: public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';
17: function open($save_path, $session_name)
18: {
19: print "OPEN: $session_name\n";
20: return true;
21: }
22: function close()
23: {
24: print "CLOSE\n";
25: return true;
26: }
27: function read($key)
28: {
29: print "READ: $key\n";
30: return $GLOBALS["hnd"]->data;
31: }
32:
33: function write($key, $val)
34: {
35: print "WRITE: $key, $val\n";
36: $GLOBALS["hnd"]->data = $val;
37: return true;
38: }
39:
40: function destroy($key)
41: {
42: print "DESTROY: $key\n";
43: return true;
44: }
45:
46: function gc() { return true; }
47: }
48:
49: $hnd = new handler;
50:
51: class foo {
52: public $bar = "ok";
53: function method() { $this->yes++; }
54: }
55:
56: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
57:
58: session_id("abtest");
59: session_start();
1.1.1.2 ! misho 60: session_decode($hnd->data);
1.1 misho 61:
1.1.1.2 ! misho 62: $_SESSION["baz"]->method();
! 63: $_SESSION["arr"][3]->method();
! 64:
! 65: var_dump($_SESSION["baz"]);
! 66: var_dump($_SESSION["arr"]);
1.1 misho 67:
68: session_write_close();
69:
70: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
71: session_start();
1.1.1.2 ! misho 72: $_SESSION["baz"]->method();
! 73: $_SESSION["arr"][3]->method();
1.1 misho 74:
75:
1.1.1.2 ! misho 76: $_SESSION["c"] = 123;
! 77: var_dump($_SESSION["baz"]);
! 78: var_dump($_SESSION["arr"]);
! 79: var_dump($_SESSION["c"]);
1.1 misho 80:
81: session_write_close();
82:
83: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
84: session_start();
1.1.1.2 ! misho 85: var_dump($_SESSION["baz"]);
! 86: var_dump($_SESSION["arr"]);
! 87: var_dump($_SESSION["c"]);
1.1 misho 88:
89: session_destroy();
90: ?>
91: --EXPECTF--
92: OPEN: PHPSESSID
93: READ: abtest
1.1.1.2 ! misho 94: object(foo)#4 (2) {
1.1 misho 95: ["bar"]=>
96: string(2) "ok"
97: ["yes"]=>
98: int(2)
99: }
100: array(1) {
101: [3]=>
1.1.1.2 ! misho 102: object(foo)#2 (2) {
1.1 misho 103: ["bar"]=>
104: string(2) "ok"
105: ["yes"]=>
106: int(2)
107: }
108: }
109: WRITE: abtest, baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:2;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:2;}}
110: CLOSE
111: OPEN: PHPSESSID
112: READ: abtest
1.1.1.2 ! misho 113: object(foo)#2 (2) {
1.1 misho 114: ["bar"]=>
115: string(2) "ok"
116: ["yes"]=>
117: int(3)
118: }
119: array(1) {
120: [3]=>
1.1.1.2 ! misho 121: object(foo)#4 (2) {
1.1 misho 122: ["bar"]=>
123: string(2) "ok"
124: ["yes"]=>
125: int(3)
126: }
127: }
128: int(123)
129: WRITE: abtest, baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:3;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:3;}}c|i:123;
130: CLOSE
131: OPEN: PHPSESSID
132: READ: abtest
1.1.1.2 ! misho 133: object(foo)#4 (2) {
1.1 misho 134: ["bar"]=>
135: string(2) "ok"
136: ["yes"]=>
137: int(3)
138: }
139: array(1) {
140: [3]=>
1.1.1.2 ! misho 141: object(foo)#2 (2) {
1.1 misho 142: ["bar"]=>
143: string(2) "ok"
144: ["yes"]=>
145: int(3)
146: }
147: }
148: int(123)
149: DESTROY: abtest
150: CLOSE
151:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>