我使用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?
}
}
我努力了…
/**
* @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用户
对于局部变量,它不是官方支持的格式,但您还必须指定变量名称:
@var用户$oUser
特定于PHPStorm,您需要使用双星号(我认为这是唯一需要它的IDE,请考虑一下):
/ ** @var用户$oUser * /
有关更多信息,请参见PHPDoc manual