Bird
Raised Fist0
PHPprogramming~15 mins

Generator function execution model in PHP - Mini Project: Build & Apply

Choose your learning style10 modes available
Generator function execution model
📖 Scenario: Imagine you want to process a list of numbers one by one without loading them all into memory at once. PHP generators help you do this efficiently.
🎯 Goal: You will create a generator function that yields numbers from 1 to 5, then use it to print each number step-by-step.
📋 What You'll Learn
Create a generator function named numberGenerator that yields numbers 1 through 5
Create a variable $gen that holds the generator returned by numberGenerator()
Use a foreach loop with variable $num to iterate over $gen
Print each number inside the loop using echo
💡 Why This Matters
🌍 Real World
Generators are useful when working with large data streams or files where loading everything at once is not efficient.
💼 Career
Understanding generators helps in writing memory-efficient PHP code, important for backend development and data processing tasks.
Progress0 / 4 steps
1
Create the generator function
Write a generator function called numberGenerator that yields the numbers 1, 2, 3, 4, and 5 one by one using yield.
PHP
Hint

Use the yield keyword inside the function to return each number one at a time.

2
Create the generator variable
Create a variable called $gen and assign it the generator returned by calling numberGenerator().
PHP
Hint

Call the function numberGenerator() and assign it to $gen.

3
Iterate over the generator
Use a foreach loop with variable $num to iterate over $gen.
PHP
Hint

Use foreach ($gen as $num) to get each number from the generator.

4
Print each number
Inside the foreach loop, print each number stored in $num followed by a newline using echo.
PHP
Hint

Use echo $num . "\n"; to print each number on its own line.

Practice

(1/5)
1. What does the yield keyword do inside a PHP generator function?
easy
A. It pauses the function and returns a value to the caller.
B. It immediately ends the function and returns a value.
C. It creates a new variable inside the function.
D. It calls another function asynchronously.

Solution

  1. Step 1: Understand the role of yield in generators

    The yield keyword pauses the function execution and sends a value back to the caller without ending the function.
  2. Step 2: Compare with other options

    Unlike return, yield does not end the function but allows it to resume later.
  3. Final Answer:

    It pauses the function and returns a value to the caller. -> Option A
  4. Quick Check:

    yield pauses and returns value [OK]
Hint: Remember: yield pauses, return ends function [OK]
Common Mistakes:
  • Confusing yield with return
  • Thinking yield creates variables
  • Assuming yield calls other functions
2. Which of the following is the correct syntax to define a generator function in PHP?
easy
A. function gen() { return yield 1; }
B. function gen() { yield 1; }
C. function gen() => yield 1;
D. generator gen() { yield 1; }

Solution

  1. Step 1: Identify correct generator syntax

    In PHP, a generator function is a normal function that uses yield inside its body.
  2. Step 2: Check each option

    function gen() { yield 1; } uses a normal function with yield correctly. function gen() { return yield 1; } misuses return yield. function gen() => yield 1; uses invalid arrow syntax. generator gen() { yield 1; } uses an invalid keyword generator.
  3. Final Answer:

    function gen() { yield 1; } -> Option B
  4. Quick Check:

    Normal function + yield = generator [OK]
Hint: Generator = function with yield inside braces [OK]
Common Mistakes:
  • Using return with yield incorrectly
  • Trying arrow function syntax for generators
  • Using non-existent keywords like 'generator'
3. What will be the output of the following PHP code?
function gen() {
  yield 1;
  yield 2;
  yield 3;
}
foreach (gen() as $value) {
  echo $value . ' ';
}
medium
A. 123
B. Error: Cannot use foreach on generator
C. 1,2,3
D. 1 2 3

Solution

  1. Step 1: Understand generator yields

    The generator yields values 1, then 2, then 3 in sequence.
  2. Step 2: Analyze foreach output

    The foreach loops over each yielded value and echoes it followed by a space, so output is "1 2 3 "
  3. Final Answer:

    1 2 3 -> Option D
  4. Quick Check:

    foreach prints each yield with space [OK]
Hint: foreach prints each yield value in order [OK]
Common Mistakes:
  • Ignoring spaces in echo output
  • Thinking foreach can't iterate generators
  • Confusing output format with commas
4. Identify the error in this PHP generator function:
function gen() {
  yield 1;
  return 2;
  yield 3;
}
foreach (gen() as $v) {
  echo $v;
}
medium
A. Syntax error: return not allowed in generator
B. No error, outputs 123
C. The return ends generator early, so yield 3 is never reached
D. foreach cannot iterate generator with return

Solution

  1. Step 1: Understand return in generators

    Return ends the generator function immediately, so code after return is not executed.
  2. Step 2: Analyze code flow

    After yielding 1, the return 2 ends the generator, so yield 3 is never reached or yielded.
  3. Final Answer:

    The return ends generator early, so yield 3 is never reached -> Option C
  4. Quick Check:

    Return stops generator, later yields skipped [OK]
Hint: Return ends generator; yields after return ignored [OK]
Common Mistakes:
  • Thinking return causes syntax error
  • Expecting all yields to run despite return
  • Assuming foreach can't handle return in generator
5. Given this generator function, what will be the output?
function gen() {
  for ($i = 0; $i < 3; $i++) {
    yield $i => $i * 2;
  }
}
foreach (gen() as $key => $value) {
  echo "$key:$value ";
}
hard
A. 0:0 1:2 2:4
B. 0:0 1:1 2:2
C. 0 2 4
D. Error: Cannot yield key => value in PHP

Solution

  1. Step 1: Understand yield with key => value

    The generator yields keys 0,1,2 with values 0,2,4 respectively (value = key * 2).
  2. Step 2: Analyze foreach output

    foreach prints each key and value separated by colon and space, so output is "0:0 1:2 2:4 "
  3. Final Answer:

    0:0 1:2 2:4 -> Option A
  4. Quick Check:

    Yield key=>value prints key:value pairs [OK]
Hint: Yield key=>value pairs print as key:value [OK]
Common Mistakes:
  • Confusing value with key
  • Thinking yield key=>value is invalid
  • Ignoring spaces in output
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard