. */ /** * Doctrine_Resource_Collection * * @package Doctrine * @subpackage Resource * @author Jonathan H. Wage * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @version $Revision$ * @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($key) { if ( ! isset($key) || !isset($this->_data[$key])) { return $this->add(); } else { return $this->_data[$key]; } } public function set($key, $value) { if ( ! isset($key) || !isset($this->_data[$key])) { $this->_data[$key] = $value; } else { $val = $this->add(); $val->_data[$key] = $value; } } public function add(Doctrine_Resource_Record $value = null) { if ( ! $value) { $value = new $this->_model; } if ($value) { $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($deep = false) { $data = array(); foreach ($this->_data as $key => $record) { $data[$key] = $record->toArray($deep); } return $data; } public function fromArray(array $array) { foreach ($array as $key => $record) { $this->add()->fromArray($record); } } public function save() { foreach ($this as $record) { $record->save(); } } public function delete() { foreach ($this as $record) { $record->delete(); } } }