jeroen / rewindable-generator
Provides a simple adapter to make generators rewindable
Installs: 48 301
Dependents: 3
Suggesters: 0
Security: 0
Stars: 15
Watchers: 4
Forks: 1
Open Issues: 0
Requires
- php: >=7.0
Requires (Dev)
- mediawiki/mediawiki-codesniffer: ~0.6.0
- ockcyp/covers-validator: ~0.6
- phpunit/phpunit: ~6.0
- squizlabs/php_codesniffer: ~2.5
This package is auto-updated.
Last update: 2024-08-28 23:08:35 UTC
README
Provides a simple adapter to make generators rewindable. Please beware that you can do the same by using PHPs native CachingIterator
.
Unfortunately, you cannot do this:
$generator = $myGeneratorFunction(); iterator_to_array($generator); iterator_to_array($generator); // boom!
Or this:
$generator = $myGeneratorFunction(); $generator->next(); $generator->rewind(); // boom!
Both result in an Exception
, as proven by the tests in tests/GeneratorTest.php
. This library provides
a simple class that takes a generator function (the function, not its return value) and adapts it to
a rewindable Iterator
.
$generator = new RewindableGenerator($myGeneratorFunction); iterator_to_array($generator); iterator_to_array($generator); // works as expected $generator->rewind(); // works as expected
Installation
To add this package as a local, per-project dependency to your project, simply add a
dependency on jeroen/rewindable-generator
to your project's composer.json
file.
Here is a minimal example of a composer.json
file that just defines a dependency on
Rewindable Generator 1.x:
{ "require": { "jeroen/rewindable-generator": "~1.0" } }
Running the tests
For tests only
composer test
For style checks only
composer cs
For a full CI run
composer ci
Release notes
Version 1.2.0 (2017-05-16)
- Dropped PHP 5.x support
Version 1.1.1 (2015-11-08)
- Fixed HHVM compatibility. Maybe...
Version 1.1.0 (2015-11-08)
- Added
onRewind
function and second constructor parameter toRewindableGenerator
Version 1.0.0 (2015-11-08)
- Initial release - read blog post