Является ли нотация PHPDoc SomeObject [] только для последовательностей?

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];
}

1

Решение

Вы не можете документировать ключи, но вы можете указать тип ключей.

@var array[string]string
0

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

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

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