Annotation of embedaddon/php/ext/session/tests/024.phpt, revision 1.1.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>