PhpStorm 类型 recognition/suggestions

PhpStorm type recognition/suggestions

我可以做些什么来让 PhpStorm (2016.1) 识别 "new X()" 范围之外的类型吗?

SomeClass.php:

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

}

DummyClass.php:

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 *
    }
  }

}
?>

我发现添加这个 hack 很有效,但使用它越来越令人沮丧:

如果(假) { $param = new 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();
}