| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | <?php/** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */namespace yii\web;/** * SessionIterator implements an [[\Iterator|iterator]] for traversing session variables managed by [[Session]]. * * @author Qiang Xue <qiang.xue@gmail.com> * @since 2.0 */class SessionIterator implements \Iterator{    /**     * @var array list of keys in the map     */    private $_keys;    /**     * @var mixed current key     */    private $_key;    /**     * Constructor.     */    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 bool     */    public function valid()    {        return $this->_key !== false;    }}
 |