Annotation of embedaddon/php/ext/session/tests/024.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: session_set_save_handler 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: error_reporting(E_ALL);
! 13:
! 14: class handler {
! 15: 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;}}';
! 16:
! 17: function open($save_path, $session_name)
! 18: {
! 19: print "OPEN: $session_name\n";
! 20: return true;
! 21: }
! 22: function close()
! 23: {
! 24: return true;
! 25: }
! 26: function read($key)
! 27: {
! 28: print "READ: $key\n";
! 29: return $GLOBALS["hnd"]->data;
! 30: }
! 31:
! 32: function write($key, $val)
! 33: {
! 34: print "WRITE: $key, $val\n";
! 35: $GLOBALS["hnd"]->data = $val;
! 36: return true;
! 37: }
! 38:
! 39: function destroy($key)
! 40: {
! 41: print "DESTROY: $key\n";
! 42: return true;
! 43: }
! 44:
! 45: function gc() { return true; }
! 46: }
! 47:
! 48: $hnd = new handler;
! 49:
! 50: class foo {
! 51: public $bar = "ok";
! 52: function method() { $this->yes++; }
! 53: }
! 54:
! 55: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
! 56:
! 57: session_id("abtest");
! 58: session_start();
! 59:
! 60: $baz = $_SESSION['baz'];
! 61: $arr = $_SESSION['arr'];
! 62: $baz->method();
! 63: $arr[3]->method();
! 64:
! 65: var_dump($baz);
! 66: var_dump($arr);
! 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();
! 72:
! 73: var_dump($baz);
! 74: var_dump($arr);
! 75:
! 76: session_destroy();
! 77: ?>
! 78: --EXPECTF--
! 79: OPEN: PHPSESSID
! 80: READ: abtest
! 81: object(foo)#%d (2) {
! 82: ["bar"]=>
! 83: string(2) "ok"
! 84: ["yes"]=>
! 85: int(2)
! 86: }
! 87: array(1) {
! 88: [3]=>
! 89: object(foo)#%d (2) {
! 90: ["bar"]=>
! 91: string(2) "ok"
! 92: ["yes"]=>
! 93: int(2)
! 94: }
! 95: }
! 96: 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;}}
! 97: OPEN: PHPSESSID
! 98: READ: abtest
! 99: object(foo)#%d (2) {
! 100: ["bar"]=>
! 101: string(2) "ok"
! 102: ["yes"]=>
! 103: int(2)
! 104: }
! 105: array(1) {
! 106: [3]=>
! 107: object(foo)#%d (2) {
! 108: ["bar"]=>
! 109: string(2) "ok"
! 110: ["yes"]=>
! 111: int(2)
! 112: }
! 113: }
! 114: DESTROY: abtest
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>