Skip to content

Instantly share code, notes, and snippets.

@vyspiansky
Last active March 18, 2025 10:52
Show Gist options
  • Save vyspiansky/83eff06219ef9f0d498a2507b2dd4105 to your computer and use it in GitHub Desktop.
Save vyspiansky/83eff06219ef9f0d498a2507b2dd4105 to your computer and use it in GitHub Desktop.
Simple generator in PHP
<?php
declare(strict_types=1);
function simpleGenerator() {
echo "The generator begins\n";
for ($i = 0; $i < 3; ++$i) {
yield $i;
echo "Yielded $i\n";
}
echo "The generator ends\n";
}
// foreach (simpleGenerator() as $v){}
$generator = simpleGenerator();
// while ($generator->valid()) {
// echo "Received {$generator->current()}\n";
// $generator->next();
// }
echo "Received {$generator->current()}\n";
$generator->next();
echo "Received {$generator->current()}\n";
$generator->next();
echo "Received {$generator->current()}\n";
$generator->next();
/*
Output:
The generator begins
Received 0
Yielded 0
Received 1
Yielded 1
Received 2
Yielded 2
The generator ends
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment