Provides a simple adapter to make PHP generators rewindable
OTHER License
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
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"
}
}
For tests only
composer test
For style checks only
composer cs
For a full CI run
composer ci
onRewind
function and second constructor parameter to RewindableGenerator