Introduction
Generators let you create lists step-by-step without using much memory. Sometimes, you want to send back a final result when the generator finishes.
<?php function exampleGenerator() { yield 1; yield 2; return 'done'; } $gen = exampleGenerator(); foreach ($gen as $value) { echo $value . "\n"; } $returnValue = $gen->getReturn(); echo $returnValue; ?>
return inside a generator sets the final return value.getReturn() on the generator object after iteration to get that value.<?php function countToThree() { yield 1; yield 2; yield 3; return 'finished'; } $gen = countToThree(); foreach ($gen as $num) { echo $num . "\n"; } echo $gen->getReturn(); ?>
<?php function letters() { yield 'a'; yield 'b'; return 'end'; } $gen = letters(); foreach ($gen as $letter) { echo $letter . "\n"; } echo $gen->getReturn(); ?>
<?php function simpleGenerator() { yield 'apple'; yield 'banana'; yield 'cherry'; return 'all fruits yielded'; } $gen = simpleGenerator(); foreach ($gen as $fruit) { echo $fruit . "\n"; } $returnValue = $gen->getReturn(); echo $returnValue . "\n"; ?>
getReturn(), or it will throw an error.return inside the function.getReturn() on the generator object after iteration to get that final value.return statement inside a PHP generator function do?return behaviorreturn inside a generator does not yield a value but sets a final return value.getReturn() method on the generator object.getReturn() after iteration. -> Option Creturn sets final value = D [OK]return in generators sets final value, not yields [OK]return yields a valuereturn throws an errorreturn with yieldgetReturn() method on generator objects to retrieve the final return value after iteration.return(), yieldReturn(), or finalValue() do not exist in PHP generators.getReturn() to get final value [OK]getReturn() method on generator object [OK]return()yield with return$gen = (function() {
yield 1;
yield 2;
return 3;
})();
foreach ($gen as $value) {
echo $value . ' ';
}
echo $gen->getReturn();
getReturn() returns 3, which is printed immediately after.getReturn() value [OK]return to yield a valuegetReturn() after iterationgetReturn() returns 0 by defaultfunction gen() {
yield 1;
return 2;
yield 3;
}
$g = gen();
foreach ($g as $v) {
echo $v . ' ';
}
echo $g->getReturn();
returnreturn 2; executes, the function ends, so yield 3; is never reached.return in generators is valid, getReturn() exists, and no minimum yield count is required.yield 3; after return is unreachable code. -> Option Areturn is unreachable = B [OK]return in generator is never executed [OK]yield after return runsreturn is not allowed in generators$sum.$i (4 after loop), not sum 6. The third has unreachable yield 7; after return. The fourth returns 7, wrong sum.return (unreachable)Pass the test and this pattern moves unknown