Даже с подсказками типов Часто полезно аннотировать переменную в виде типизированного массива (особенно для параметров):
/**
* @param int[] $bars
*/
function foo(array $bars)
{
foreach ($bars as $bar) {
// int stuff
}
}
Но если переменная используется только для цикла foreach, лучше написатькод для итераций .
Есть ли чистый способ аннотировать типизированный итерируемый? @param int iterable
Правильное именование переменной является очевидным решением: function foo(iterable $ints)
, но иногда это может быть один из нескольких типов (не разделяющих наследование):
```php
/**
* @param MyCustomClass[]|MyOtherClass[] $bars
*/
function foo(iterable $myCustomClasses_Or_MyOtherClasses)
{
foreach ($myCustomClasses_Or_MyOtherClasses as $myCustomClass_Or_MyOtherClass) {
...
Этоможно ввести подсказку для параметра с помощью iterable
при аннотировании типизированного массива:
/**
* @param int[] $bars
*/
function foo(iterable $bars)
...
Но я нахожу это излишне запутанным, и это не охватывает такие случаи, как @return
и @var
Я нашел информацию о типах массивов ( на phpdoc.org и несколько вопросов по SO), но ничего об итеративной типизации.