是 $this->__invoke(); PHP 100% 安全有效?

Is $this->__invoke(); 100% safe and valid in PHP?

// in class
public function test () {
    $this->__invoke();
}

$inst->test();

这个测试运行没有任何错误。

我的问题:有什么理由不应该这样做吗?是否有任何特殊情况、隐藏的警告,或者它的行为是否像任何常规的 function/method?

这应该行不通,因为您的 class 中没有 __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.

魔术方法可以直接调用,如您在第二个测试中看到的那样,但我认为这不是一个好主意,因为它们是某种钩子并且它们的代码可能会意外执行。