// in class
public function test () {
$this->__invoke();
}
$inst->test();
此测试运行时没有任何错误。
我的问题:有什么理由不应该这样做吗?是否存在任何角落案例,隐藏警告,或者它是否像任何常规函数/方法一样?
答案 0 :(得分:3)
由于您的课程中没有__invoke()
方法,因此不应该有效:
class SomeClass {
public function test()
{
$this->__invoke();
}
}
$inst = new SomeClass();
$inst->test();
如果您实施__invoke()
,那应该有效:
class SomeClass {
public function __invoke()
{
var_dump('Invoke!');
}
}
$inst = new SomeClass();
$inst();
可以直接调用魔术方法,正如您在第二次测试中看到的那样,但在我看来,这不是一个好主意,因为它们是某种钩子并且它们的代码可能会意外执行。