是$this-> __ invoke();吗?在PHP中100%安全有效吗?
作者:互联网
// in class
public function test () {
$this->__invoke();
}
$inst->test();
该测试运行无任何错误.
我的问题:为什么不应该这样做?是否有任何极端情况,隐藏的警告或它的行为类似于任何常规函数/方法?
解决方法:
那应该不起作用,因为您的类中没有__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();
可以在第二个测试中看到,可以直接调用魔术方法,但是在我看来,这不是一个好主意,因为它们是某种挂钩,并且其代码可能会意外执行.
标签:magic-methods,php,class 来源: https://codeday.me/bug/20191120/2044164.html