当一个对象被当做函数来使用的时候,默认是会报错的。
class Test {
}
$obj = new Test();
var_dump($obj());
PHP Fatal error: Uncaught Error: Function name must be a string
如果想让对象具有这样的能力,则需要重新实现 __invoke()
class Test {
public function __invoke(){
return Test::class;
}
}
$obj = new Test();
var_dump($obj()); // string(4) "Test"