基于参数的PhpStorm代码完成

时间:2015-07-09 10:56:30

标签: phpstorm

我想知道,是否可以根据传递给方法的参数完成代码。

示例:

class One { public function foo(){} }
class Two { public function bar(){} }
class DI {
    public function get($name) {
        if ($name === 'foo') {
            return new One();
        } elseif ($name === 'bar') {
            return new Two();
        }
    }
}

(new DI())->get('one')->为我提供了 foo bar

有没有办法,如何告诉PhpStorm,如果名字是一个,我会上课One

1 个答案:

答案 0 :(得分:0)

当然 - 看看Advanced Metadata support

请注意,这种元数据仅在PhpStorm v9 (昨天刚刚发布)后才能使用,因为v8仅支持静态工厂。

例如:

<?php
namespace PHPSTORM_META {
    $STATIC_METHOD_TYPES = [
        \DI::get('') => [
            "foo" instanceof \One,
            "bar" instanceof \Two,
        ]
    ];
}

<强> P.S。

在您的代码中(内部方法get()),您使用foobar作为键来定义要创建的类...但是当使用实际的DI->get()时,您是使用类名作为键(例如one)。我确定这只是一个错字..但仍然 - 下次尝试提供有效的代码作为例子。