PHP Magic Methods: invoke and call
While __construct and __toString are common, PHP offers other powerful magic methods for dynamic behavior.
1. __invoke()
The __invoke() method is called when a script tries to call an object as a function. This allows objects to be treated like closures or callbacks.
class CallableClass {
public function __invoke($x) {
var_dump($x);
}
}
$obj = new CallableClass;
$obj(5); // Outputs: int(5)
2. __call()
The __call() method is triggered when invoking inaccessible methods in an object context. This is useful for dynamic method handling or proxy patterns.
class MethodTest {
public function __call($name, $arguments) {
// Note: value of $name is case sensitive.
echo "Calling object method '$name' " . implode(', ', $arguments);
}
}
$obj = new MethodTest;
$obj->runTest('in object context');
// Outputs: Calling object method 'runTest' in object context