Bird
Raised Fist0
PHPprogramming~5 mins

__call and __callStatic in PHP - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the __call magic method in PHP?

The __call method is triggered when invoking inaccessible or undefined instance methods on an object. It allows handling or customizing calls to methods that do not exist.

Click to reveal answer
beginner
How does __callStatic differ from __call in PHP?

__callStatic is triggered when calling inaccessible or undefined static methods, while __call handles instance method calls.

Click to reveal answer
beginner
What are the two parameters passed to __call and __callStatic methods?

Both methods receive:
1. $name: The name of the method being called.
2. $arguments: An array of arguments passed to the method.

Click to reveal answer
intermediate
Can __call and __callStatic be used to create flexible APIs or method overloading in PHP?

Yes, they allow intercepting calls to undefined methods, enabling dynamic method handling and simulating method overloading behavior.

Click to reveal answer
beginner
Provide a simple example of using __call in a PHP class.
<pre>&lt;?php
class Example {
    public function __call($name, $arguments) {
        return "Called method '$name' with arguments: " . implode(', ', $arguments);
    }
}

$obj = new Example();
echo $obj->testMethod('hello', 'world');
// Output: Called method 'testMethod' with arguments: hello, world
?&gt;</pre>
Click to reveal answer
Which magic method is called when an undefined instance method is invoked in PHP?
A__call
B__callStatic
C__invoke
D__get
What parameters do __call and __callStatic receive?
AOnly method name
BOnly arguments array
CMethod name and arguments array
DNo parameters
Which magic method is triggered by calling an undefined static method?
A__callStatic
B__call
C__set
D__get
Can __call be used to simulate method overloading in PHP?
ANo
BYes
COnly with static methods
DOnly in PHP 8+
What will happen if you call an undefined instance method and __call is not defined?
AIgnores the call
BReturns null
CCalls <code>__callStatic</code>
DFatal error
Explain how __call and __callStatic work in PHP and when they are triggered.
Think about instance vs static method calls.
You got /4 concepts.
    Describe a practical use case where __call or __callStatic can be helpful.
    Consider situations where method names are not fixed.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the __call magic method in PHP?
      easy
      A. To automatically serialize objects
      B. To handle calls to undefined static methods
      C. To handle calls to undefined instance methods
      D. To overload operators like + and -

      Solution

      1. Step 1: Understand the role of __call

        The __call method is triggered when an undefined instance method is called on an object.
      2. Step 2: Differentiate from __callStatic

        __callStatic handles undefined static method calls, not instance calls.
      3. Final Answer:

        To handle calls to undefined instance methods -> Option C
      4. Quick Check:

        __call = instance method handler [OK]
      Hint: Instance missing methods use __call, static ones use __callStatic [OK]
      Common Mistakes:
      • Confusing __call with __callStatic
      • Thinking __call handles static methods
      • Assuming __call serializes objects
      2. Which of the following is the correct syntax to declare the __callStatic method in a PHP class?
      easy
      A. public static function __callStatic($name, $arguments)
      B. public function __callStatic($name, $arguments)
      C. static function __callStatic($name, $arguments)
      D. function __callStatic($name, $arguments)

      Solution

      1. Step 1: Recall method declaration rules for static magic methods

        The __callStatic method must be declared as public static function to handle static calls.
      2. Step 2: Check each option's syntax

        public static function __callStatic($name, $arguments) correctly uses public static function. Options B and D miss static, and C misses public.
      3. Final Answer:

        public static function __callStatic($name, $arguments) -> Option A
      4. Quick Check:

        Static magic methods need 'public static' [OK]
      Hint: Static magic methods need 'public static' keyword [OK]
      Common Mistakes:
      • Omitting 'static' keyword
      • Omitting 'public' visibility
      • Using wrong parameter names
      3. What will be the output of the following PHP code?
      class Test {
          public function __call($name, $args) {
              echo "Called method: $name with argument: " . $args[0];
          }
      }
      
      $obj = new Test();
      $obj->hello('world');
      
      medium
      A. Called method: hello with argument: world
      B. Fatal error: Call to undefined method Test::hello()
      C. Called method: __call with argument: world
      D. No output

      Solution

      1. Step 1: Identify method call and class behavior

        The method hello is not defined in Test, so __call is triggered.
      2. Step 2: Understand __call output

        __call echoes the method name and first argument, so it prints "Called method: hello with argument: world".
      3. Final Answer:

        Called method: hello with argument: world -> Option A
      4. Quick Check:

        Undefined instance method triggers __call [OK]
      Hint: Undefined instance calls trigger __call with method name [OK]
      Common Mistakes:
      • Expecting fatal error instead of __call handling
      • Confusing __call with __callStatic
      • Ignoring argument array usage
      4. Consider this PHP code snippet:
      class Demo {
          public static function __callStatic($name, $args) {
              echo "Static call to $name";
          }
      }
      
      Demo::test();

      What is the error in this code?
      medium
      A. Missing public keyword in __callStatic declaration
      B. Cannot call static method __callStatic directly
      C. Class Demo must define __call method for static calls
      D. No error; code runs and prints 'Static call to test'

      Solution

      1. Step 1: Check method declaration and call

        __callStatic is declared correctly as public static function and is called via Demo::test().
      2. Step 2: Understand magic method behavior

        Since test is undefined static method, __callStatic is triggered and echoes the message.
      3. Final Answer:

        No error; code runs and prints 'Static call to test' -> Option D
      4. Quick Check:

        Undefined static calls trigger __callStatic [OK]
      Hint: Undefined static calls invoke __callStatic automatically [OK]
      Common Mistakes:
      • Thinking __call is needed for static calls
      • Assuming direct call to __callStatic is required
      • Missing 'public' or 'static' keywords
      5. You want to create a PHP class that logs every call to undefined instance or static methods with their names and arguments. Which approach correctly uses __call and __callStatic to achieve this?
      hard
      A. Use normal methods with logging inside; magic methods cannot log undefined calls
      B. Implement __call for instance methods and __callStatic for static methods, both logging method name and args
      C. Implement only __callStatic to catch all method calls, static and instance
      D. Implement only __call to catch all method calls, static and instance

      Solution

      1. Step 1: Understand magic methods roles

        __call handles undefined instance method calls; __callStatic handles undefined static method calls.
      2. Step 2: Combine both for full coverage

        To log all undefined calls, implement both methods to log method names and arguments accordingly.
      3. Final Answer:

        Implement __call for instance methods and __callStatic for static methods, both logging method name and args -> Option B
      4. Quick Check:

        Use both __call and __callStatic for full logging [OK]
      Hint: Use both __call and __callStatic to catch all undefined calls [OK]
      Common Mistakes:
      • Using only one magic method for both call types
      • Thinking magic methods cannot log calls
      • Confusing instance and static method handling
      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