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 文档提示方法的指定结果的主要内容,如果未能解决你的问题,请参考以下文章