Все еще остается открытым вопрос о том, как аннотировать ключи массива с помощью PhpDoc: https://github.com/phpDocumentor/phpDocumentor2/issues/650
Я пробовал следующие обозначения:
/**
* @return array<string, SomeClass>
* @return SomeClass[string]
*/
public function someMethod(): array { ... }
, но PhpStorm, кажется, не может решить эту проблемууместно, чтобы при использовании, например, foreach
внутренний объект был неизвестен:
foreach($obj->someMethod() as $some) {
$some->methodOfSomeClass(); // PhpStorm -> Method not found
}
Я знаю, что могу использовать оператор канала:
@return array<string, SomeClass>|SomeClass[]
Я также знаю, что могу печататьпеременные подсказки:
/** @var SomeClass $obj */
$obj
Но есть ли способ настроить PhpStorm для определения типа значения массива без использования канала?