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.

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

报告相同问题?

悬赏问题

  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥15 QT6颜色选择对话框显示不完整
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥15 DS18B20内部ADC模数转换器