File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / session / tests / session_set_save_handler_iface_002.phpt
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jul 22 01:32:01 2013 UTC (10 years, 11 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17, HEAD
5.4.17

    1: --TEST--
    2: Test session_set_save_handler() function: interface wrong
    3: --INI--
    4: session.save_handler=files
    5: session.name=PHPSESSID
    6: --SKIPIF--
    7: <?php include('skipif.inc'); ?>
    8: --FILE--
    9: <?php
   10: 
   11: ob_start();
   12: 
   13: /* 
   14:  * Prototype : bool session_set_save_handler(SessionHandlerInterface $handler [, bool $register_shutdown_function = true])
   15:  * Description : Sets user-level session storage functions
   16:  * Source code : ext/session/session.c 
   17:  */
   18: 
   19: echo "*** Testing session_set_save_handler() function: interface wrong ***\n";
   20: 
   21: interface MySessionHandlerInterface {
   22: 	public function open($path, $name);
   23: 	public function close();
   24: 	public function read($id);
   25: 	public function write($id, $data);
   26: 	public function destroy($id);
   27: 	public function gc($maxlifetime);
   28: }
   29: 
   30: class MySession2 implements MySessionHandlerInterface {
   31: 	public $path;
   32: 
   33: 	public function open($path, $name) {
   34: 		if (!$path) {
   35: 			$path = sys_get_temp_dir();
   36: 		}
   37: 		$this->path = $path . '/u_sess_' . $name;
   38: 		return true;
   39: 	}
   40: 
   41: 	public function close() {
   42: 		return true;
   43: 	}
   44: 
   45: 	public function read($id) {
   46: 		return @file_get_contents($this->path . $id);
   47: 	}
   48: 
   49: 	public function write($id, $data) {
   50: 		echo "Unsupported session handler in use\n";
   51: 	}
   52: 
   53: 	public function destroy($id) {
   54: 		@unlink($this->path . $id);
   55: 	}
   56: 
   57: 	public function gc($maxlifetime) {
   58: 		foreach (glob($this->path . '*') as $filename) {
   59: 			if (filemtime($filename) + $maxlifetime < time()) {
   60: 				@unlink($filename);
   61: 			}
   62: 		}
   63: 		return true;
   64: 	}
   65: }
   66: 
   67: function good_write($id, $data) {
   68: 	global $handler;
   69: 	echo "good handler writing\n";
   70: 	return file_put_contents($handler->path . $id, $data);
   71: }
   72: 
   73: $handler = new MySession2;
   74: 
   75: $ret = session_set_save_handler(array($handler, 'open'), array($handler, 'close'),
   76: 	array($handler, 'read'), 'good_write', array($handler, 'destroy'), array($handler, 'gc'));
   77: 
   78: var_dump($ret);
   79: $ret = session_set_save_handler($handler);
   80: var_dump($ret);
   81: 
   82: session_start();
   83: 
   84: --EXPECTF--
   85: *** Testing session_set_save_handler() function: interface wrong ***
   86: bool(true)
   87: 
   88: Warning: session_set_save_handler() expects parameter 1 to be SessionHandlerInterface, object given in %s
   89: bool(false)
   90: good handler writing

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