Повторяемый ввод (например, `int []` => `int iterable`) - PullRequest
0 голосов
/ 17 октября 2019

Даже с подсказками типов Часто полезно аннотировать переменную в виде типизированного массива (особенно для параметров):

/**
 * @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), но ничего об итеративной типизации.

...