for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace AlecRabbit\Accessories;
/**
* Class Circular
*/
class Circular implements \Iterator
{
/** @var array */
protected $data;
* Circular constructor.
* @param mixed $data
public function __construct($data)
$this->data = $data;
reset($this->data);
}
* @return mixed
public function __invoke()
return $this->getElement();
public function getElement()
if (false === $result = current($this->data)) {
$result = reset($this->data);
next($this->data);
return $result;
* {@inheritdoc}
public function current()
return current($this->data);
public function next(): void
public function key()
return key($this->data);
public function valid(): bool
return
false !== current($this->data);
public function rewind(): void