Skip to content

Instantly share code, notes, and snippets.

@iwankgb
Created October 26, 2015 08:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iwankgb/55238bbb551f9e3a5324 to your computer and use it in GitHub Desktop.
Save iwankgb/55238bbb551f9e3a5324 to your computer and use it in GitHub Desktop.
Generator with subgenerator
<?php
$generatorWithTwoWayCommunication = function()
{
$randomValue = mt_rand();
yield $randomValue;
$receivedFromOuterSpace = yield;
$returnValue = yield from subGenerator($receivedFromOuterSpace, $randomValue);
return $returnValue;
};
function subGenerator($valueFromOuterSpace, $randomValue)
{
yield $valueFromOuterSpace * $valueFromOuterSpace;
yield $valueFromOuterSpace * $randomValue;
return 'Lis Witalis';
};
$generator = $generatorWithTwoWayCommunication();
$valueFromFirstIteration = $generator->current();
$generator->next();
$valueFromSecondIteration = $generator->send(666);
$generator->next();
$valueFromThirdIteration = $generator->current();
$generator->next();
$valueReturnedFromGenerator = $generator->getReturn();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment