phpDocumentor поддерживает объявление массива, который содержит только элементы определенного типа, например, SomeObject[]
или же string[]
как указано в http://www.phpdoc.org/docs/latest/guides/types.html#arrays. Однако я не уверен, что такое обозначение предназначено для указания только последовательности (списка) указанных типов или целесообразно использовать его также для словарей (хэшей).
Такое использование, без сомнения, правильно:
/** @var SomeObject[] $myList */
foreach($myList as $item) {
// … Do something with the $item.
// Every $item is an instance of SomeObject[]
}
Но будет ли это хорошо?
/** @var SomeObject[] $myDictionary **/
foreach($myDictionary as $ref => $item) {
// … Do something not only with the $item, but with
// the non-sequential $ref too.
// Although every $item is an instance of SomeObject,
// there is no clue, what the keys ($ref) are.
}
Или, скажем, без foreach
:
/**
* @param SomeObject[] $dictionary
* @param Ref $refObject
* @return SomeObject
*/
function getByRef(array $dictionary, Ref $refObject) {
// Just added a bit of complexity so that the example
// is not totally dumb.
$key = $refObject->getDictionaryKey();
return $dictionary[$key];
}
Вы не можете документировать ключи, но вы можете указать тип ключей.
@var array[string]string
Других решений пока нет …