Annotation of embedaddon/php/ext/session/tests/025.phpt, revision 1.1.1.1

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: 
                     18:     function open($save_path, $session_name)
                     19:     {
                     20:         print "OPEN: $session_name\n";
                     21:         return true;
                     22:     }
                     23:     function close()
                     24:     {
                     25:                print "CLOSE\n";
                     26:         return true;
                     27:     }
                     28:     function read($key)
                     29:     {
                     30:         print "READ: $key\n";
                     31:         return $GLOBALS["hnd"]->data;
                     32:     }
                     33: 
                     34:     function write($key, $val)
                     35:     {
                     36:         print "WRITE: $key, $val\n";
                     37:         $GLOBALS["hnd"]->data = $val;
                     38:         return true;
                     39:     }
                     40: 
                     41:     function destroy($key)
                     42:     {
                     43:         print "DESTROY: $key\n";
                     44:         return true;
                     45:     }
                     46: 
                     47:     function gc() { return true; }
                     48: 
                     49:     function __construct()
                     50:     {
                     51:         if (ini_get("unicode.semantics")) {
                     52:             $this->data = str_replace('s:', 'U:', $this->data);
                     53:         }
                     54:     }
                     55: }
                     56: 
                     57: $hnd = new handler;
                     58: 
                     59: class foo {
                     60:     public $bar = "ok";
                     61:     function method() { $this->yes++; }
                     62: }
                     63: 
                     64: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
                     65: 
                     66: session_id("abtest");
                     67: session_start();
                     68: $baz = $_SESSION['baz'];
                     69: $arr = $_SESSION['arr'];
                     70: $baz->method();
                     71: $arr[3]->method();
                     72: 
                     73: var_dump($baz);
                     74: var_dump($arr);
                     75: 
                     76: session_write_close();
                     77: 
                     78: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
                     79: session_start();
                     80: $baz = $_SESSION['baz'];
                     81: $arr = $_SESSION['arr'];
                     82: 
                     83: 
                     84: $baz->method();
                     85: $arr[3]->method();
                     86: 
                     87: 
                     88: $c = 123;
                     89: $_SESSION['c'] = $c;
                     90: var_dump($baz); var_dump($arr); var_dump($c);
                     91: 
                     92: session_write_close();
                     93: 
                     94: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
                     95: session_start();
                     96: var_dump($baz); var_dump($arr); var_dump($c);
                     97: 
                     98: session_destroy();
                     99: ?>
                    100: --EXPECTF--
                    101: OPEN: PHPSESSID
                    102: READ: abtest
                    103: object(foo)#%d (2) {
                    104:   ["bar"]=>
                    105:   string(2) "ok"
                    106:   ["yes"]=>
                    107:   int(2)
                    108: }
                    109: array(1) {
                    110:   [3]=>
                    111:   object(foo)#%d (2) {
                    112:     ["bar"]=>
                    113:     string(2) "ok"
                    114:     ["yes"]=>
                    115:     int(2)
                    116:   }
                    117: }
                    118: 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;}}
                    119: CLOSE
                    120: OPEN: PHPSESSID
                    121: READ: abtest
                    122: object(foo)#%d (2) {
                    123:   ["bar"]=>
                    124:   string(2) "ok"
                    125:   ["yes"]=>
                    126:   int(3)
                    127: }
                    128: array(1) {
                    129:   [3]=>
                    130:   object(foo)#%d (2) {
                    131:     ["bar"]=>
                    132:     string(2) "ok"
                    133:     ["yes"]=>
                    134:     int(3)
                    135:   }
                    136: }
                    137: int(123)
                    138: 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;
                    139: CLOSE
                    140: OPEN: PHPSESSID
                    141: READ: abtest
                    142: object(foo)#%d (2) {
                    143:   ["bar"]=>
                    144:   string(2) "ok"
                    145:   ["yes"]=>
                    146:   int(3)
                    147: }
                    148: array(1) {
                    149:   [3]=>
                    150:   object(foo)#%d (2) {
                    151:     ["bar"]=>
                    152:     string(2) "ok"
                    153:     ["yes"]=>
                    154:     int(3)
                    155:   }
                    156: }
                    157: int(123)
                    158: DESTROY: abtest
                    159: CLOSE

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>