Bird
Raised Fist0
PHPprogramming~5 mins

First-class callable syntax in PHP - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the first-class callable syntax in PHP?
It is a way to create a callable reference to a function or method using the syntax foo(...) or ClassName::methodName(...) that can be passed around like a variable.
Click to reveal answer
beginner
How do you create a first-class callable for a named function <code>myFunction</code>?
Use $callable = myFunction(...); to get a callable reference to myFunction.
Click to reveal answer
intermediate
How can you create a first-class callable for a static method <code>MyClass::myStaticMethod</code>?
Use $callable = MyClass::myStaticMethod(...); to get a callable reference to the static method.
Click to reveal answer
intermediate
What is the benefit of using first-class callable syntax over traditional callables in PHP?
It is simpler and more readable. You can create callables without using strings or arrays, reducing errors and improving code clarity.
Click to reveal answer
advanced
Can first-class callable syntax be used with closures (anonymous functions)?
No, first-class callable syntax is for named functions and methods. Closures are already callable objects and do not need this syntax.
Click to reveal answer
Which syntax creates a first-class callable for a function named process?
Aprocess(...)
Bprocess()
C"process"
D["process"]
How do you create a first-class callable for a static method Logger::log?
ALogger::log(...)
BLogger::log()
C[Logger, 'log']
D"Logger::log"
What does the ... (splat operator) do in first-class callable syntax?
ACalls the function immediately
BIndicates a callable reference
CCreates an array
DUnpacks arguments
Can you use first-class callable syntax with anonymous functions (closures)?
AYes, but only with named closures
BYes, with <code>closure(...)</code>
CNo, closures cannot be called
DNo, closures are already callable objects
What is a key advantage of first-class callable syntax in PHP?
AAutomatically executes functions
BReplaces all function calls
CSimplifies creating callable references
DOnly works with static methods
Explain how to create a first-class callable for a named function and a static method in PHP.
Think about how you write the function or method name followed by three dots.
You got /3 concepts.
    Describe the benefits of using first-class callable syntax compared to traditional callables in PHP.
    Focus on how the new syntax makes code easier to write and understand.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the first-class callable syntax in PHP allow you to do?
      easy
      A. Automatically convert functions to strings
      B. Create new functions dynamically at runtime
      C. Prevent functions from being called more than once
      D. Treat functions as variables to pass or store them easily

      Solution

      1. Step 1: Understand the concept of first-class callables

        First-class callable syntax lets you treat functions like variables, so you can pass or store them.
      2. Step 2: Compare options with this concept

        Only 'Treat functions as variables to pass or store them easily' correctly describes this ability; others describe unrelated features.
      3. Final Answer:

        Treat functions as variables to pass or store them easily -> Option D
      4. Quick Check:

        First-class callable = Treat functions as variables [OK]
      Hint: Remember: first-class means functions act like variables [OK]
      Common Mistakes:
      • Confusing callable syntax with dynamic function creation
      • Thinking it converts functions to strings
      • Assuming it restricts function calls
      2. Which of the following is the correct syntax to get a first-class callable for a function named foo in PHP?
      easy
      A. $callable = foo(...);
      B. $callable = foo();
      C. $callable = foo\(...);
      D. $callable = foo;

      Solution

      1. Step 1: Recall the first-class callable syntax

        In PHP, to get a callable for a function, you use function_name(...).
      2. Step 2: Match the syntax with options

        $callable = foo(...); uses foo(...), which is correct. $callable = foo(); calls the function. foo\(...) uses backslash incorrectly causing syntax error. $callable = foo; treats name as constant.
      3. Final Answer:

        $callable = foo(...); -> Option A
      4. Quick Check:

        Callable syntax = function_name(...) [OK]
      Hint: Use parentheses with ellipsis to get callable: foo(...) [OK]
      Common Mistakes:
      • Calling the function instead of getting callable
      • Omitting parentheses and ellipsis
      • Using backslash incorrectly for global functions
      3. What will be the output of the following PHP code?
      $fn = strlen(...);
      echo $fn('hello');
      medium
      A. 5
      B. hello
      C. strlen
      D. Error: Call to undefined function

      Solution

      1. Step 1: Understand the callable assignment

        The variable $fn is assigned the callable for the built-in function strlen using first-class callable syntax.
      2. Step 2: Call the callable with argument 'hello'

        Calling $fn('hello') executes strlen('hello'), which returns 5.
      3. Final Answer:

        5 -> Option A
      4. Quick Check:

        strlen('hello') = 5 [OK]
      Hint: Callable with strlen(...) returns string length [OK]
      Common Mistakes:
      • Expecting the function name as output
      • Confusing callable with string
      • Thinking it causes an error
      4. Identify the error in the following PHP code using first-class callable syntax:
      
      function greet($name) {
          return "Hello, $name!";
      }
      
      $greet = greet;
      echo $greet('World');
      
      medium
      A. No error, code runs fine
      B. Missing parentheses and ellipsis to get callable
      C. Cannot assign function to variable
      D. Function greet is not defined

      Solution

      1. Step 1: Check how callable is assigned

        The code assigns $greet = greet; which is invalid syntax for first-class callable.
      2. Step 2: Correct syntax requires parentheses and ellipsis

        To get a callable, it should be $greet = greet(...);. Without this, PHP treats it as a constant or causes error.
      3. Final Answer:

        Missing parentheses and ellipsis to get callable -> Option B
      4. Quick Check:

        Callable syntax needs (...) [OK]
      Hint: Always use (...) to get callable, not just function name [OK]
      Common Mistakes:
      • Assigning function name without parentheses
      • Assuming function name alone is callable
      • Ignoring syntax errors
      5. Given the following PHP code, what will be the output?
      
      function multiply($a, $b) {
          return $a * $b;
      }
      
      $operations = [
          'double' => multiply(...),
          'square' => fn($x) => multiply($x, $x),
      ];
      
      echo $operations['double'](5, 2) . ', ' . $operations['square'](4);
      
      hard
      A. Error: Cannot use multiply(...) here
      B. 7, 16
      C. 10, 16
      D. 10, 8

      Solution

      1. Step 1: Understand the callable assignments

        The array $operations stores two callables: 'double' uses first-class callable multiply(...), 'square' uses an arrow function calling multiply.
      2. Step 2: Evaluate each callable call

        $operations['double'](5, 2) calls multiply(5, 2) = 10.
        $operations['square'](4) calls multiply(4, 4) = 16.
      3. Final Answer:

        10, 16 -> Option C
      4. Quick Check:

        multiply(5,2)=10 and multiply(4,4)=16 [OK]
      Hint: First-class callable works inside arrays like normal functions [OK]
      Common Mistakes:
      • Confusing arrow function with callable syntax
      • Expecting error from multiply(...) usage
      • Mixing up multiply arguments
      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