. */ /** * Doctrine_Collection_Iterator * iterates through Doctrine_Collection * * @package Doctrine * @subpackage Collection * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.phpdoctrine.org * @since 1.0 * @version $Revision$ * @author Konsta Vesterinen */ abstract class Doctrine_Collection_Iterator implements Iterator { /** * @var Doctrine_Collection $collection */ protected $collection; /** * @var array $keys */ protected $keys; /** * @var mixed $key */ protected $key; /** * @var integer $index */ protected $index; /** * @var integer $count */ protected $count; /** * constructor * @var Doctrine_Collection $collection */ public function __construct($collection) { $this->collection = $collection; $this->keys = $this->collection->getKeys(); $this->count = $this->collection->count(); } /** * rewinds the iterator * * @return void */ public function rewind() { $this->index = 0; $i = $this->index; if (isset($this->keys[$i])) { $this->key = $this->keys[$i]; } } /** * returns the current key * * @return integer */ public function key() { return $this->key; } /** * returns the current record * * @return Doctrine_Entity */ public function current() { return $this->collection->get($this->key); } /** * advances the internal pointer * * @return void */ public function next() { $this->index++; $i = $this->index; if (isset($this->keys[$i])) { $this->key = $this->keys[$i]; } } }