dongnong7524 2018-01-30 17:08
浏览 127
已采纳

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

Using the following code, the code completion works fine!

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

But, its possible to IDE (PhpStorm) complete the code using the following php invocation method write style (Curly braces)?

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

If so, how? Thanks for the help!

  • 写回答

1条回答 默认 最新

  • dou6495 2018-02-02 10:29
    关注

    PhpStorm doesn't support dynamic fields/methods. For a static tool, it's hard to track which field/method is actually accessed. Let's take a look at a more realistic example.

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

    This is how the dynamic invocation usually looks like. In a real code, $str is typically a combination of an external input (e.g. from a database) and business logic. Both are beyond the possibilities of a static analysis.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成