魔术调用静态方法的 PHPStorm 代码完成(使用花括号语法)[挂起]

PHPStorm code completion for magic invoke static methods (Using curly braces syntax) [Pendent]

使用以下代码,代码完成工作正常!

class FooClass
{
    public function run(){}
}

/**
 * @method static FooClass foo(bool $param1 = false)
 */

class Test
{
    public static function __callStatic($name, $arguments)
    {
        //Implementation code ..
    }
}

//Code completes fine for FooClass methods ..
Test::foo()->run();

但是,IDE (PhpStorm) 可以使用以下 php 调用方法编写样式(花括号)来完成代码吗?

//Code NOT completes fine ..
Test::{"foo"}();

如果可以,怎么做?感谢您的帮助!

PhpStorm 不支持动态 fields/methods。对于静态工具,很难跟踪实际访问了哪个 field/method。让我们看一个更现实的例子。

function foo($str) {
    //Code NOT completes fine ..
    Test::{$str}()->run();
}

这就是动态调用通常的样子。在实际代码中,$str 通常是外部输入(例如来自数据库)和业务逻辑的组合。两者都超出了静态分析的可能性。