1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
<?php
declare(strict_types=1);
namespace Doctrine\ORM\Internal\Hydration;
use Iterator;
use ReturnTypeWillChange;
/**
* Represents a result structure that can be iterated over, hydrating row-by-row
* during the iteration. An IterableResult is obtained by AbstractHydrator#iterate().
*
* @deprecated
*/
class IterableResult implements Iterator
{
/** @var AbstractHydrator */
private $_hydrator;
/** @var bool */
private $_rewinded = false;
/** @var int */
private $_key = -1;
/** @var mixed[]|null */
private $_current = null;
/** @param AbstractHydrator $hydrator */
public function __construct($hydrator)
{
$this->_hydrator = $hydrator;
}
/**
* @return void
*
* @throws HydrationException
*/
#[ReturnTypeWillChange]
public function rewind()
{
if ($this->_rewinded === true) {
throw new HydrationException('Can only iterate a Result once.');
}
$this->_current = $this->next();
$this->_rewinded = true;
}
/**
* Gets the next set of results.
*
* @return mixed[]|false
*/
#[ReturnTypeWillChange]
public function next()
{
$this->_current = $this->_hydrator->hydrateRow();
$this->_key++;
return $this->_current;
}
/** @return mixed */
#[ReturnTypeWillChange]
public function current()
{
return $this->_current;
}
/** @return int */
#[ReturnTypeWillChange]
public function key()
{
return $this->_key;
}
/** @return bool */
#[ReturnTypeWillChange]
public function valid()
{
return $this->_current !== false;
}
}
|