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

Posted

技术标签:

【中文标题】PhpStorm 文档提示方法的指定结果【英文标题】:PhpStorm docs hint specified outcome of method 【发布时间】:2017-10-24 19:47:16 【问题描述】:

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 或类似的东西中就可以了,请不要使用其他方法。

【问题讨论】:

如果你需要根据传递的参数(某种工厂/容器)返回方法类型——查看Advanced Metadata——这就是 Laravel IDE Helper 的工作原理(例如) 【参考方案1】:

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

其次,你可以注意返回类型,像这样:

/**
 * @return someClass|otherClass
 */
public static function getInstance($className)

    return $className::Instance();

【讨论】:

我知道它应该是静态的,这只是一个例子。在我的真实代码中是正确的。如果我这样设置返回类型,它还可以从其他类而不是实际返回的类生成代码提示。 虽然没有明确说明,但我认为问题可能是问是否有办法让 PhpStorm 知道它返回的是什么类型的类,而不必拥有@return 语句中列出的所有可能性,所以如果我有一个 class Foo,其中有 function Instance(),那么在没有将 Foo 声明为返回类型的情况下,PhpStorm 是否可以知道 demo::getInstance('Foo'); @gabe3886,没有。 PhpStorm 只能提出所有变体。 PhpStorm 像我的回答一样生成自动 phpdoc(枚举所有可能的返回类型)。

以上是关于PhpStorm 文档提示方法的指定结果的主要内容,如果未能解决你的问题,请参考以下文章

使用nginx反向代理激活PHPStorm

PHP配置phpstorm+xampp教程

PHP配置phpstorm+xampp教程

PhpStorm - 快速文档中的返回类型提示

PHP配置phpstorm+xampp教程

[php] phpStudy+PhpStorm+XDebug配置