Как представить непустой массив?

Я пробовал использовать пересечение типов

/**
 * @param array&nonEmpty $users
 */
function sayHello($users): void {
    echo 'Hello, ' . $users[0];
}

но жалуется:

PHPDoc tag @param for parameter $users contains unresolvable type.

(живая демонстрация)

Если я разделю аннотацию до nonEmpty, ошибка изменится на

Parameter $users of function sayHello() has invalid typehint type nonEmpty

Я вижу класс, ответственный за nonEmptyвведите в дереве исходных текстов, а также несколько раз упоминалось в тестах и проблемах, но я просто не мог заставить его работать.

1 ответ

Решение

Просто чтобы дать ответ тем, кто приходит из поисковых систем:

PHPStan теперь имеет non-empty-arrayтип, который вы можете использовать. Вот пример.

Другие вопросы по тегам