Source of file ResultSet.php
Size: 3,095 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Db/ResultSet/ResultSet.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Db\ResultSet; use ArrayObject; class ResultSet extends AbstractResultSet { const TYPE_ARRAYOBJECT = 'arrayobject'; const TYPE_ARRAY = 'array'; /** * Allowed return types * * @var array */ protected $allowedReturnTypes = array( self::TYPE_ARRAYOBJECT, self::TYPE_ARRAY, ); /** * @var ArrayObject */ protected $arrayObjectPrototype = null; /** * Return type to use when returning an object from the set * * @var ResultSet::TYPE_ARRAYOBJECT|ResultSet::TYPE_ARRAY */ protected $returnType = self::TYPE_ARRAYOBJECT; /** * Constructor * * @param string $returnType * @param null|ArrayObject $arrayObjectPrototype */ public function __construct($returnType = self::TYPE_ARRAYOBJECT, $arrayObjectPrototype = null) { $this->returnType = (in_array($returnType, array(self::TYPE_ARRAY, self::TYPE_ARRAYOBJECT))) ? $returnType : self::TYPE_ARRAYOBJECT; if ($this->returnType === self::TYPE_ARRAYOBJECT) { $this->setArrayObjectPrototype(($arrayObjectPrototype) ?: new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS)); } } /** * Set the row object prototype * * @param ArrayObject $arrayObjectPrototype * @throws Exception\InvalidArgumentException * @return ResultSet */ public function setArrayObjectPrototype($arrayObjectPrototype) { if (!is_object($arrayObjectPrototype) || (!$arrayObjectPrototype instanceof ArrayObject && !method_exists($arrayObjectPrototype, 'exchangeArray')) ) { throw new Exception\InvalidArgumentException('Object must be of type ArrayObject, or at least implement exchangeArray'); } $this->arrayObjectPrototype = $arrayObjectPrototype; return $this; } /** * Get the row object prototype * * @return ArrayObject */ public function getArrayObjectPrototype() { return $this->arrayObjectPrototype; } /** * Get the return type to use when returning objects from the set * * @return string */ public function getReturnType() { return $this->returnType; } /** * @return array|\ArrayObject|null */ public function current() { $data = parent::current(); if ($this->returnType === self::TYPE_ARRAYOBJECT && is_array($data)) { /** @var $ao ArrayObject */ $ao = clone $this->arrayObjectPrototype; if ($ao instanceof ArrayObject || method_exists($ao, 'exchangeArray')) { $ao->exchangeArray($data); } return $ao; } return $data; } } |