Phpstorm phpForm类型识别/建议

Phpstorm phpForm类型识别/建议,phpstorm,phpstorm-2016.1,Phpstorm,Phpstorm 2016.1,我能做些什么让PhpStorm(2016.1)识别“new X()”范围之外的类型 SomeClass.php: class SomeClass { public function DoMagic() { echo "doing magic"; } } class DummyClass { protected $mParamsList; function __construct() { $this->mParamsList = arra

我能做些什么让PhpStorm(2016.1)识别
“new X()”
范围之外的类型

SomeClass.php:

class SomeClass
{    
  public function DoMagic()
  {
    echo "doing magic";
  }

}
class DummyClass
{
  protected $mParamsList;

  function __construct()
  {
    $this->mParamsList = array();
  }

  public function InitParamsList()
  {
    $this->mParamsList[] = new SomeClass();
  }

  public function GetParamsList()
  {
    return $this->mParamsList;
  }

}
DummyClass.php:

class SomeClass
{    
  public function DoMagic()
  {
    echo "doing magic";
  }

}
class DummyClass
{
  protected $mParamsList;

  function __construct()
  {
    $this->mParamsList = array();
  }

  public function InitParamsList()
  {
    $this->mParamsList[] = new SomeClass();
  }

  public function GetParamsList()
  {
    return $this->mParamsList;
  }

}
UserClass.php-无建议:

class UserClass
{
  public function DoMagic()
  {

    $dummy2 = new DummyClass();

    $params = $dummy2->GetParamsList(); 

    foreach ($params as $param)
    {
      $param-> * nothing happens *
    }
  }

}
?>
我发现添加这个黑客程序是可行的,但使用它会让人沮丧:

if(false) { $param=新的SomeClass(); }

因此,完整的工作示例是:

class UserClass
{
  public function DoMagic()
  {
    $dummy = new DummyClass();

    $params = $dummy->GetParamsList(); 

    foreach ($params as $param)
    {
      if (false)
      {
        $param = new SomeClass();
      }

      $param-> * suggestions pop up * 
    }
  }

}

在执行以下功能之前,应使用文档类型注释:

/**
 * @return \MyObject
 */
public function GetMyObject()
{
    return new MyObject();
}

在执行以下功能之前,应使用文档类型注释:

/**
 * @return \MyObject
 */
public function GetMyObject()
{
    return new MyObject();
}

请提供能够说明该问题的完整示例代码。我的简单测试表明它工作得很好。。所以这一定是你当地的问题(可能是真正的代码..或者其他问题)正如您所看到的,甚至不需要额外的PHPDoc(尽管拥有文档总是很有用的)。对不起,我提供了一个过于简化的版本,它确实有效。用损坏的示例更新了问题。我的类是在单独的文件中定义的,如果这有什么区别的话。如果您接受@Saliery的答案并进行调整,以便
DummyClass::GetParamsList()
在其文档块中有
@return SomeClass[]
,这不管用吗?@Buffalo这里有一个屏幕截图,上面有所有3条PHPDoc注释:附:一些阅读链接:结论:使用PHPDoc——它可以帮助其他人阅读你的代码、你自己(1年后……当你忘记它的确切功能时)以及IDE(更好的代码完成和代码分析)请提供能够说明该问题的完整示例代码。我的简单测试表明它工作得很好。。所以这一定是你当地的问题(可能是真正的代码..或者其他问题)正如您所看到的,甚至不需要额外的PHPDoc(尽管拥有文档总是很有用的)。对不起,我提供了一个过于简化的版本,它确实有效。用损坏的示例更新了问题。我的类是在单独的文件中定义的,如果这有什么区别的话。如果您接受@Saliery的答案并进行调整,以便
DummyClass::GetParamsList()
在其文档块中有
@return SomeClass[]
,这不管用吗?@Buffalo这里有一个屏幕截图,上面有所有3条PHPDoc注释:附:一些阅读链接:结论:使用PHPDoc——它可以帮助其他人阅读你的代码、你自己(1年后……当你忘记它的确切功能时)以及IDE(更好的代码完成和代码分析)