diff options
author | Fabio Bas <ctrlaltca@gmail.com> | 2015-01-20 22:16:10 +0100 |
---|---|---|
committer | Fabio Bas <ctrlaltca@gmail.com> | 2015-01-20 22:16:10 +0100 |
commit | ef4d964de440970b76ab48fcbd6748f43675efa3 (patch) | |
tree | a6a6ffa6d53ffaa12c2d5bd6f036e4c013481f26 /framework/Web/TSessionIterator.php | |
parent | 7254793d2bbe3f2f3d87d97172c54a54deea0a3a (diff) |
one class per file: framework/Web/*.php
Diffstat (limited to 'framework/Web/TSessionIterator.php')
-rw-r--r-- | framework/Web/TSessionIterator.php | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/framework/Web/TSessionIterator.php b/framework/Web/TSessionIterator.php new file mode 100644 index 00000000..fab1dda2 --- /dev/null +++ b/framework/Web/TSessionIterator.php @@ -0,0 +1,95 @@ +<?php +/** + * THttpSession class + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2014 PradoSoft + * @license http://www.pradosoft.com/license/ + * @package System.Web + */ + +/** + * TSessionIterator class + * + * TSessionIterator implements Iterator interface. + * + * TSessionIterator is used by THttpSession. It allows THttpSession to return a new iterator + * for traversing the session variables. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @package System.Web + * @since 3.0 + */ +class TSessionIterator implements Iterator +{ + /** + * @var array list of keys in the map + */ + private $_keys; + /** + * @var mixed current key + */ + private $_key; + + /** + * Constructor. + * @param array the data to be iterated through + */ + public function __construct() + { + $this->_keys=array_keys($_SESSION); + } + + /** + * Rewinds internal array pointer. + * This method is required by the interface Iterator. + */ + public function rewind() + { + $this->_key=reset($this->_keys); + } + + /** + * Returns the key of the current array element. + * This method is required by the interface Iterator. + * @return mixed the key of the current array element + */ + public function key() + { + return $this->_key; + } + + /** + * Returns the current array element. + * This method is required by the interface Iterator. + * @return mixed the current array element + */ + public function current() + { + return isset($_SESSION[$this->_key])?$_SESSION[$this->_key]:null; + } + + /** + * Moves the internal pointer to the next array element. + * This method is required by the interface Iterator. + */ + public function next() + { + do + { + $this->_key=next($this->_keys); + } + while(!isset($_SESSION[$this->_key]) && $this->_key!==false); + } + + /** + * Returns whether there is an element at current position. + * This method is required by the interface Iterator. + * @return boolean + */ + public function valid() + { + return $this->_key!==false; + } +}
\ No newline at end of file |