Let's see how to connect from one generator to another.
This is called generator delegation. Use the from keyword.
- function generator() {
- echo "generator 1 operation 1 <br>";
- echo "generator 1 operation 2 <br>";
- yield "generator 1 - 1";
- echo "generator 1 operation 3 <br>";
- echo "generator 1 operation 4 <br>";
- yield "generator 2 - 1";
- echo "generator 1 operation 5 <br>";
- echo "generator 1 operation 6 <br>";
- yield from generator2();
- }
- function generator2() {
- echo "generator 2 operation 1";
- echo "generator 2 operation 2";
- yield "generator 2 - 1";
- return;
- }
Looking at the end of generator 1 above, we call generator 2 using the from keyword.
Now let's call Generator 1 and see that Generator 2 is also called.
- <?php
- function generatorOne() {
- echo "generator 1 operation 1 <br>";
- echo "generator 1 operation 2 <br>";
- yield "generator 1 - 1<br>";
- echo "generator 1 operation 3 <br>";
- echo "generator 1 operation 4 <br>";
- yield "generator 2 - 1<br>";
- echo "generator 1 operation 5 <br>";
- echo "generator 1 operation 6 <br>";
- yield from generatorTwo();
- }
- function generatorTwo() {
- echo "<hr>generator 2 operation 1<br>";
- echo "generator 2 operation 2<br>";
- yield "generator 2 - 1<br>";
- return;
- }
- foreach(generatorOne() as $go){
- echo $go;
- }
- ?>
Here is the result of the above code:
You learned how to call another generator from a generator using the from keyword. ^^