编程语言
首页 > 编程语言> > 是$this-> __ invoke();吗?在PHP中100%安全有效吗?

是$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();

http://3v4l.org/JOBXn.

如果实现__invoke(),则应该可以:

class SomeClass {
    public function __invoke()
    {
        var_dump('Invoke!');
    }

}

$inst = new SomeClass();
$inst();

http://3v4l.org/mpG5d.

可以在第二个测试中看到,可以直接调用魔术方法,但是在我看来,这不是一个好主意,因为它们是某种挂钩,并且其代码可能会意外执行.

标签:magic-methods,php,class
来源: https://codeday.me/bug/20191120/2044164.html