PhpStorm: как определить тип var члена массива?

я использую PhpStorm 2016.2.1 IDE. У меня есть типизированный массив (все члены будут одного и того же, известного класса), и я бы хотел, чтобы среда IDE знала тип, чтобы он помог мне с автозаполнением / intellisense.

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 = ...;

Пока единственное, что я получил, — это использовать функции получения:

/**
* @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 метаданные для этого массива?

2

Решение

Для переменных класса, как вы знаете, вы можете просто сделать

@var User

Для локальных переменных это официально не поддерживаемый формат, но вы также должны указать имя переменной:

@var User $oUser

Специально для PHPStorm вам нужно использовать двойные звездочки (я думаю, что это единственная IDE, которая нуждается в этом, учтите это):

/** @var User $oUser */

Увидеть Руководство по PHPDoc для получения дополнительной информации

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]