如何告诉数组成员的var类型



我使用PhpStorm 2016.2.1 IDE。我有一个类型的数组(所有成员将是相同的,已知的类),我想IDE知道的类型,所以我可以帮助我与自动完成/智能感知。

class MyClass{    
     /**
     * @var array
     */
    public $userArray;
    public addUser($uid){ $this->$userArray[$uid] = new User($uid); }
    public processUser($uid){
        $oUser = $this->$userArray[$uid];
            //since the PHP array can contain anything, the IDE makes 
            //no assumption about what data type $oUser is. How to let it 
            //know that it's of type User?
    }
}

I have try…

 /**
 * @var User
 */
public $oUser = ...;

 /**
 * @type User
 */
public $oUser = ...;
到目前为止,我唯一能做的就是使用getter函数:
/**
* @return User
*/
function getUser($uid){ return $this->$userArray[$uid]; }
function processUser($uid){
    //now the IDE knows the type of $oUser
    $oUser = $this->getUser($uid);
}

但是,仅仅为了获得更好的IDE支持而使用不必要的函数调用来减慢脚本的速度似乎是一个坏主意。

任何想法我可以让PhpStorm知道变量的类型?或者更好的是:如何告诉它数组将在该数组的PHPDoc元数据中包含哪种类型?

对于类变量,如您所知,您可以简单地执行

@var User

对于局部变量,它不是官方支持的格式,但是您还必须指定变量名:

@var User $oUser

特定于PHPStorm,您需要使用双星号(我认为这是唯一需要它的IDE,请考虑):

/** @var User $oUser */

查看PHPDoc手册获取更多信息

最新更新