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>