// in class
public function test () {
$this->__invoke();
}
$inst->test();
此测试运行没有任何错误。
我的问题:有什么理由不应该这样做吗?是否有任何极端情况、隐藏的警告,或者它的行为是否像任何常规函数/方法?
最佳答案
这应该不起作用,因为您的类中没有 __invoke()
方法:
class SomeClass {
public function test()
{
$this->__invoke();
}
}
$inst = new SomeClass();
$inst->test();
http://3v4l.org/JOBXn 。
如果您实现
__invoke()
,那应该可以:class SomeClass {
public function __invoke()
{
var_dump('Invoke!');
}
}
$inst = new SomeClass();
$inst();
http://3v4l.org/mpG5d 。
正如您在第二个测试中看到的那样,可以直接调用魔术方法,但在我看来,这不是一个好主意,因为它们是某种钩子(Hook),并且它们的代码可能会意外执行。
关于php - 是 $this->__invoke();在 PHP 中 100% 安全有效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29727913/