Bird
Raised Fist0
PHPprogramming~10 mins

Why closures matter in PHP - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a closure that returns a greeting.

PHP
<?php
$greet = function($name) {
    return "Hello, " . [1] . "!";
};
echo $greet('Alice');
?>
Drag options to blanks, or click blank then click option'
Aname
Bname()
C$this
D$name
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting the $ sign before the variable name.
Using a variable name not defined in the function parameters.
2fill in blank
medium

Complete the code to use the 'use' keyword to access an external variable inside a closure.

PHP
<?php
$message = 'Hello';
$greet = [1]($name) use ($message) {
    return $message . ', ' . $name . '!';
};
echo $greet('Bob');
?>
Drag options to blanks, or click blank then click option'
Afn
Bclosure
Cfunction
Dcallable
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'fn' instead of 'function' when 'use' is needed.
Not including the 'use' keyword to access external variables.
3fill in blank
hard

Fix the error in the closure to correctly modify the external variable by reference.

PHP
<?php
$count = 0;
$increment = function() use (&[1]) {
    [1]++;
};
$increment();
echo $count;
?>
Drag options to blanks, or click blank then click option'
Acount
Bincrement
Ccounter
Dvalue
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different variable name inside the closure.
Not passing the variable by reference with &.
4fill in blank
hard

Fill both blanks to create a closure that filters an array using an external threshold variable.

PHP
<?php
$threshold = 10;
$numbers = [5, 12, 8, 20];
$filtered = array_filter($numbers, function($num) use ([1]) {
    return $num [2] $threshold;
});
print_r($filtered);
?>
Drag options to blanks, or click blank then click option'
A$threshold
B>
C<
D$num
Attempts:
3 left
💡 Hint
Common Mistakes
Not using the 'use' keyword to access the external variable.
Using the wrong comparison operator.
5fill in blank
hard

Fill all three blanks to create a closure that returns a multiplier function with a captured factor.

PHP
<?php
function multiplier($factor) {
    return function($number) use ([1]) {
        return $number [2] [3];
    };
}
$double = multiplier(2);
echo $double(5);
?>
Drag options to blanks, or click blank then click option'
A$factor
B*
D+
Attempts:
3 left
💡 Hint
Common Mistakes
Not capturing the variable with 'use'.
Using the wrong operator for multiplication.

Practice

(1/5)
1. What is a closure in PHP?
easy
A. A named function that cannot access outside variables
B. An anonymous function that can access variables from its parent scope
C. A class method that is always static
D. A variable that stores a string value

Solution

  1. Step 1: Understand the definition of closure and compare options

    A closure is an anonymous function that can remember and use variables from the scope where it was created. Only An anonymous function that can access variables from its parent scope describes an anonymous function with access to outer variables, which matches the closure concept.
  2. Final Answer:

    An anonymous function that can access variables from its parent scope -> Option B
  3. Quick Check:

    Closure = Anonymous function with outer scope access [OK]
Hint: Closures are anonymous functions with memory of outside variables [OK]
Common Mistakes:
  • Confusing closures with regular named functions
  • Thinking closures cannot access outside variables
  • Mixing closures with class methods
2. Which of the following is the correct syntax to create a closure in PHP?
easy
A. $func = closure() { echo 'Hello'; };
B. function $func() { echo 'Hello'; };
C. $func = function() { echo 'Hello'; };
D. $func = new function() { echo 'Hello'; };

Solution

  1. Step 1: Recall PHP closure syntax and check options

    Closures are created using the keyword function without a name, assigned to a variable. $func = function() { echo 'Hello'; }; uses function() { ... } assigned to $func, which is correct syntax.
  2. Final Answer:

    $func = function() { echo 'Hello'; }; -> Option C
  3. Quick Check:

    Closure syntax = function() { ... } [OK]
Hint: Closures use 'function() { }' assigned to variables [OK]
Common Mistakes:
  • Using 'closure()' keyword which does not exist
  • Trying to name the anonymous function
  • Using 'new function()' which is invalid
3. What will be the output of this PHP code?
$message = 'Hi';
$greet = function() use ($message) {
echo $message;
};
$greet();
medium
A. HiHi
B. Error: Undefined variable
C. No output
D. Hi

Solution

  1. Step 1: Understand the use keyword and trace execution

    The closure uses use ($message) to import the variable $message from the outer scope. When $greet() is called, it echoes the value of $message, which is 'Hi'.
  2. Final Answer:

    Hi -> Option D
  3. Quick Check:

    Closure with use outputs outer variable value [OK]
Hint: Closures use 'use' to access outside variables [OK]
Common Mistakes:
  • Forgetting to use 'use' keyword to import variables
  • Expecting closure to access outer variables automatically
  • Confusing output with repeated prints
4. Identify the error in this PHP closure code:
$count = 0;
$increment = function() {
$count++;
};
$increment();
echo $count;
medium
A. Closure cannot access $count without 'use' keyword
B. Syntax error: missing semicolon after function
C. Cannot increment variables inside closures
D. No error, outputs 1

Solution

  1. Step 1: Analyze variable access and PHP scope rules in closures

    The closure tries to increment $count but does not import it with use, so $count is undefined inside. Variables outside closures must be imported with use to be accessible inside closures.
  2. Final Answer:

    Closure cannot access $count without 'use' keyword -> Option A
  3. Quick Check:

    Use 'use' to access outer variables inside closures [OK]
Hint: Always import outer variables with 'use' in closures [OK]
Common Mistakes:
  • Assuming closures access outer variables automatically
  • Thinking increment inside closure changes outer variable without 'use'
  • Confusing syntax errors with scope errors
5. How can closures help in creating private data in PHP? Choose the best explanation.
hard
A. Closures can capture variables in their scope, hiding them from outside access
B. Closures automatically make variables global
C. Closures convert variables to constants
D. Closures prevent any function from accessing variables

Solution

  1. Step 1: Understand private data and how closures enable it

    Private data means variables that cannot be accessed directly from outside code. Closures can enclose variables in their scope, so only the closure can access or modify them, hiding them from outside.
  2. Final Answer:

    Closures can capture variables in their scope, hiding them from outside access -> Option A
  3. Quick Check:

    Closures enable private data by capturing variables [OK]
Hint: Closures hide variables by capturing them inside functions [OK]
Common Mistakes:
  • Thinking closures make variables global
  • Confusing closures with constants
  • Believing closures block all variable access
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