我如何在PHP中定义一个类Foo
,允许做这样的事情:
$foo = new Foo();
$foo->bar;
$foo();
您正在询问可调用对象,或者将对象视为函数。要做到这一点,需要实现__invoke()
方法,如下所示:
class Foo {
public function __invoke()
{
echo 'invoke!';
}
}
阅读更多:http://php.net/manual/en/language.oop5.magic.php#object.invoke
同样,你可以多次调用$foo->bar;
,就像你可以写:$a = 5; $a;
一样,但它不会有任何效果。它只是一个领域。如果它是一个可调用的,你必须添加括号来调用它。