Bird
Raised Fist0
PHPprogramming~5 mins

Closures as callbacks in PHP - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a closure in PHP?
A closure is an anonymous function that can capture variables from its surrounding scope and be used as a callback or stored in a variable.
Click to reveal answer
beginner
How do you define a closure to use as a callback in PHP?
You define an anonymous function using the function keyword without a name, optionally capturing variables with use, and pass it as an argument where a callback is expected.
Click to reveal answer
intermediate
What does the use keyword do in a PHP closure?
The use keyword allows a closure to access variables from the parent scope by copying them into the closure's scope.
Click to reveal answer
intermediate
Why are closures useful as callbacks?
Closures let you write small, inline functions that can access variables from outside their scope, making callbacks flexible and easy to customize without defining a full named function.
Click to reveal answer
beginner
Example: What will this PHP code output?
$greet = function($name) { return "Hello, $name!"; };
echo $greet('Alice');
It will output: Hello, Alice! because the closure takes the argument $name and returns a greeting string.
Click to reveal answer
What keyword is used to create an anonymous function (closure) in PHP?
Afunction
Bclosure
Clambda
Dcallback
How do you access a variable from the parent scope inside a closure?
ABy passing it as a parameter
BUsing the <code>use</code> keyword
CUsing <code>global</code>
DYou cannot access it
Which of these is a valid way to pass a closure as a callback in PHP?
Aarray_map(function($x) { return $x * 2; }, [1, 2, 3])
Barray_map('function($x) { return $x * 2; }', [1, 2, 3])
Carray_map(closure($x) { return $x * 2; }, [1, 2, 3])
Darray_map(callback($x) { return $x * 2; }, [1, 2, 3])
What will this code output?
$factor = 3;
$multiply = function($n) use ($factor) { return $n * $factor; };
echo $multiply(5);
A3
B5
C15
DError
Why might you prefer a closure over a named function for a callback?
AClosures always run asynchronously
BClosures cannot access outside variables
CNamed functions cannot be used as callbacks
DClosures are faster to write and can capture variables from outside scope
Explain how closures work as callbacks in PHP and how they can access variables from outside their scope.
Think about how you write a small function inside another function and still use outside data.
You got /4 concepts.
    Describe a simple example of using a closure as a callback with array_map in PHP.
    Imagine you want to double every number in a list using a small function.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is a closure in PHP when used as a callback?
      easy
      A. A special variable type for storing data
      B. A named function that cannot access outside variables
      C. An anonymous function that can be passed as an argument
      D. A PHP keyword for ending loops

      Solution

      1. Step 1: Understand what a closure is

        A closure is an anonymous function, meaning it has no name and can be created on the fly.
      2. Step 2: Recognize closures as callbacks

        Closures can be passed as arguments to other functions to customize behavior, making them useful as callbacks.
      3. Final Answer:

        An anonymous function that can be passed as an argument -> Option C
      4. Quick Check:

        Closure = anonymous function callback [OK]
      Hint: Closures are nameless functions passed as arguments [OK]
      Common Mistakes:
      • Thinking closures must have names
      • Confusing closures with variables
      • Believing closures cannot be passed as arguments
      2. Which of the following is the correct syntax to define a closure as a callback in PHP?
      easy
      A. array_map(function $x { return $x * 2; }, [1, 2, 3]);
      B. array_map(function($x) { $x * 2; }, [1, 2, 3]);
      C. array_map(function => $x * 2, [1, 2, 3]);
      D. array_map(function($x) { return $x * 2; }, [1, 2, 3]);

      Solution

      1. Step 1: Check closure syntax

        The correct syntax for an anonymous function uses the keyword function followed by parentheses with parameters, then braces with the function body.
      2. Step 2: Validate the return statement

        The closure must explicitly return the value to be used by array_map. array_map(function($x) { return $x * 2; }, [1, 2, 3]); correctly returns $x * 2.
      3. Final Answer:

        array_map(function($x) { return $x * 2; }, [1, 2, 3]); -> Option D
      4. Quick Check:

        Correct closure syntax = array_map(function($x) { return $x * 2; }, [1, 2, 3]); [OK]
      Hint: Use function($param) { return value; } for closures [OK]
      Common Mistakes:
      • Omitting parentheses around parameters
      • Missing return keyword inside closure
      • Using arrow (=>) incorrectly in closure
      3. What will be the output of the following PHP code?
      $numbers = [1, 2, 3];
      $result = array_map(function($n) { return $n + 5; }, $numbers);
      print_r($result);
      medium
      A. Array (1, 2, 3, 5)
      B. [6, 7, 8]
      C. [5, 6, 7]
      D. [1, 2, 3]

      Solution

      1. Step 1: Understand array_map with closure

        The closure adds 5 to each element of the array $numbers.
      2. Step 2: Calculate each element

        1+5=6, 2+5=7, 3+5=8, so the resulting array is [6, 7, 8].
      3. Final Answer:

        [6, 7, 8] -> Option B
      4. Quick Check:

        Each element + 5 = [6,7,8] [OK]
      Hint: array_map applies closure to each element [OK]
      Common Mistakes:
      • Confusing original array with result
      • Forgetting closure return value
      • Misreading array_map behavior
      4. Identify the error in this PHP code using a closure as a callback:
      $multiplier = 3;
      $numbers = [1, 2, 3];
      $result = array_map(function($n) { return $n * $multiplier; }, $numbers);
      print_r($result);
      medium
      A. The variable $multiplier is not accessible inside the closure
      B. array_map cannot accept closures as callbacks
      C. Missing semicolon after array_map call
      D. The closure must be named to access external variables

      Solution

      1. Step 1: Check variable scope inside closure

        Variables outside a closure are not accessible inside unless passed with use.
      2. Step 2: Identify missing use keyword

        The closure needs use ($multiplier) to access the external variable.
      3. Final Answer:

        The variable $multiplier is not accessible inside the closure -> Option A
      4. Quick Check:

        External vars need use() in closures [OK]
      Hint: Use 'use' to access outside variables in closures [OK]
      Common Mistakes:
      • Assuming closures access all outside variables automatically
      • Thinking closures must be named to access variables
      • Believing array_map rejects closures
      5. How can you modify this PHP code to correctly multiply each number by an external variable using a closure as a callback?
      $factor = 4;
      $nums = [2, 4, 6];
      $results = array_map(function($num) { return $num * $factor; }, $nums);
      print_r($results);
      hard
      A. Add use ($factor) after the function parentheses
      B. Declare $factor as global inside the closure
      C. Pass $factor as a second argument to array_map
      D. Replace closure with a named function

      Solution

      1. Step 1: Understand variable scope in closures

        To access an external variable inside a closure, you must explicitly import it using use.
      2. Step 2: Apply use ($factor) syntax

        Modify the closure to function($num) use ($factor) { return $num * $factor; } to access $factor.
      3. Final Answer:

        Add use ($factor) after the function parentheses -> Option A
      4. Quick Check:

        use() imports external vars into closures [OK]
      Hint: Use 'use' keyword to bring external variables inside closures [OK]
      Common Mistakes:
      • Trying to access external variables without use()
      • Using global keyword inside closures incorrectly
      • Passing extra arguments to array_map
      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