CallbackIterator allows to simulate yield feature from PHP 5.5.
<?php
function getAllFromDatabase($tableName)
{
$page = 0;
$perPage = 1000;
while ($rows = Db::getRows($tableName, $page, $perPage)) {
foreach ($rows as $row) {
yield $row;
}
$page++;
}
}<?php
use Awesomite\Iterators\CallbackIterator;
function getAllFromDatabase($tableName)
{
$page = 0;
$perPage = 1000;
$rows = [];
return new CallbackIterator(function () use (&$rows, $tableName, &$page, $perPage) {
if (!$rows) {
$rows = Db::getRows($tableName, $page, $perPage);
$page++;
}
if ($rows) {
return array_shift($rows);
}
CallbackIterator::stopIterate();
});
}The version numbers follow the Semantic Versioning 2.0.0 scheme.