awesomite / iterators
模拟 PHP < 5.5 的 yield 功能
v1.0.0
2018-01-02 19:09 UTC
Requires (Dev)
- awesomite/phpunit-4.8-fixer: ^1.0
- phpunit/phpunit: ^4.8.36
- symfony/process: ^2.8.16 || ^3.0
This package is auto-updated.
Last update: 2024-09-13 21:15:48 UTC
README
CallbackIterator
CallbackIterator
允许模拟 PHP 5.5 的 yield
功能。
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 < 5.5
<?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(); }); }
版本管理
版本号遵循 语义版本控制 2.0.0 方案。