- reset: documentation ( source)
- key: documentation ( source)
- next: documentation ( source)
<?php
namespace Pinq\Iterators\Standard;
/**
* Common functionality for the array iterator
*
* @author Elliot Levin <elliotlevin@hotmail.com>
*/
trait ArrayIteratorT
{
/**
* @var array
*/
protected $array;
public function __constructIterator(array &$array)
{
$this->array =& $array;
}
/**
* @return array
*/
final public function getArrayCopy()
{
return $this->array;
}
}
/**
* Implementation of the array iterator using the fetch method.
*
* @author Elliot Levin <elliotlevin@hotmail.com>
*/
class ArrayIterator
{
use ArrayIteratorT;
public function __construct(array $array)
{
self::__constructIterator($array);
}
public function doRewind()
{
reset($this->array);
}
final protected function doFetch()
{
$key = key($this->array);
if ($key === null) {
return null;
}
next($this->array);
return [$key, &$this->array[$key]];
}
}
(new ArrayIterator([]));