PhpStorm文档提示方法的指定结果

PhpStorm文档提示方法的指定结果,php,phpstorm,phpdoc,type-hinting,Php,Phpstorm,Phpdoc,Type Hinting,PhpStorm是否可以理解具有指定参数的方法的结果,或者当从特定类调用时,是否可以知道在PHPDoc中定义的结果 例如: class demo { public static function getInstance($className) { return $className::Instance(); } } class someClass { public function Instance() { return new s

PhpStorm是否可以理解具有指定参数的方法的结果,或者当从特定类调用时,是否可以知道在PHPDoc中定义的结果

例如:

class demo {
    public static function getInstance($className)
    {
        return $className::Instance();
    }
}
class someClass {
    public function Instance() {
        return new someClass();
    }
}

class otherClass {
    public function Instance() {
        return new otherClass();
    }
}

demo::getInstance('someClass'); // PHPstorm should understand this would return someClass
demo::getInstance('otherClass'); // PHPstorm should understand this would return otherClass
现在我的PhpStorm说

在字符串中找不到方法getInstance


对于代码提示,我希望PhpStorm了解基于参数值返回的类的类型。将这些数据放在PHPDoc或类似的东西中是可以的,只是请不要添加其他方法。

首先,静态调用非静态方法

其次,您可以注意返回类型,如下所示:

/**
 * @return someClass|otherClass
 */
public static function getInstance($className)
{
    return $className::Instance();
}

首先,静态调用非静态方法

其次,您可以注意返回类型,如下所示:

/**
 * @return someClass|otherClass
 */
public static function getInstance($className)
{
    return $className::Instance();
}

我知道它应该是静态的,这只是一个例子。这在我的真实代码中是正确的。如果我这样设置返回类型,它也可以从其他类而不是实际返回的类生成代码提示。虽然没有明确说明,但我认为问题可能是,是否有一种方法可以让PhpStorm知道它返回的是什么类型的类,不必在
@return
语句中列出所有可能性,因此如果我有一个
类Foo
,它有
函数Instance()
,就可以
demo::getInstance('Foo')PhpStorm是否知道Foo未声明为返回类型?@gabe3886,否。PhpStorm只能提出所有变体。PhpStorm生成自动phpdoc,就像我的答案一样(枚举所有可能的返回类型)。我知道它应该是静态的,这只是一个例子。这在我的真实代码中是正确的。如果我这样设置返回类型,它也可以从其他类而不是实际返回的类生成代码提示。虽然没有明确说明,但我认为问题可能是,是否有一种方法可以让PhpStorm知道它返回的是什么类型的类,不必在
@return
语句中列出所有可能性,因此如果我有一个
类Foo
,它有
函数Instance()
,就可以
demo::getInstance('Foo')PhpStorm是否知道Foo未声明为返回类型?@gabe3886,否。PhpStorm只能提出所有变体。PhpStorm生成与我的答案类似的自动phpdoc(枚举所有可能的返回类型)。如果需要根据传递的参数(某种类型的工厂/容器)返回方法类型,请看——如果需要根据传递的参数(某种类型的工厂/容器)返回方法类型,Laravel IDE Helper就是这样工作的(例如)--看--这就是Laravel IDE帮助程序的工作原理(例如)