diff options
Diffstat (limited to 'framework/web/CHttpSessionIterator.php')
| -rw-r--r-- | framework/web/CHttpSessionIterator.php | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/framework/web/CHttpSessionIterator.php b/framework/web/CHttpSessionIterator.php new file mode 100644 index 0000000..f695c46 --- /dev/null +++ b/framework/web/CHttpSessionIterator.php @@ -0,0 +1,92 @@ +<?php +/** + * CHttpSessionIterator class file. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @link http://www.yiiframework.com/ + * @copyright Copyright © 2008-2011 Yii Software LLC + * @license http://www.yiiframework.com/license/ + */ + +/** + * CHttpSessionIterator implements an interator for {@link CHttpSession}. + * + * It allows CHttpSession to return a new iterator for traversing the session variables. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @version $Id: CHttpSessionIterator.php 2799 2011-01-01 19:31:13Z qiang.xue $ + * @package system.web + * @since 1.0 + */ +class CHttpSessionIterator 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; + } +} |
