魔术调用静态方法的 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
通常是外部输入(例如来自数据库)和业务逻辑的组合。两者都超出了静态分析的可能性。
使用以下代码,代码完成工作正常!
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
通常是外部输入(例如来自数据库)和业务逻辑的组合。两者都超出了静态分析的可能性。