. */ /** * Doctrine_Resource_Collection * * @author Konsta Vesterinen * @author Jonathan H. Wage * @package Doctrine * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @version $Revision$ * @category Object Relational Mapping * @link www.phpdoctrine.com * @since 1.0 */ class Doctrine_Resource_Collection extends Doctrine_Resource_Access implements Countable, IteratorAggregate { protected $_data = array(); protected $_config = array(); protected $_model = null; public function __construct($model) { $this->_model = $model; } public function getConfig($key = null) { return Doctrine_Resource_Client::getInstance()->getConfig($key); } public function count() { return count($this->_data); } public function get($get) { if (isset($this->_data[$get])) { return $this->_data[$get]; } } public function set($set, $value) { $this->_data[$set] = $value; } public function add($value = null) { if (!$value) { $model = $this->_model; $value = new $model(); } $this->_data[] = $value; return $value; } public function getIterator() { return new ArrayIterator($this->_data); } public function getFirst() { return isset($this->_data[0]) ? $this->_data[0]:null; } public function toArray() { $array = array(); foreach ($this->_data as $key => $record) { if ($record->exists() || $record->hasChanges()) { $array[$this->_model . '_' .$key] = $record->toArray(); } } return $array; } public function save() { foreach ($this as $record) { $record->save(); } } public function delete() { foreach ($this as $record) { $record->delete(); } } }