PHPStan продолжает говорить: «В итерируемом типе не указан тип значения», но он указан

При использовании объявлений типов PHP PHPStan, похоже, считает, что я должен указывать элементы массива как в PHPDoc, так и в самом объявлении, но поправьте меня, если я ошибаюсь. PHP (по крайней мере, PHP 7) не поддерживает объявления членов массива. . Вот пример:

1: <?php
2: 
3: class Foo
4: {
5:     /*
6:      * @var array<string>
7:      */
8:     private array $foo;
9: }

Это приводит к:

8   Property Foo::$foo type has no value type specified in iterable type array.

Обратите внимание: указанная строка имеет номер 8, а PHPDoc указывает элементы массива. Но говоря

...
8:     private array<string> $foo;
...

недействителен PHP.

Если я пропущу объявление массива и оставлю PHPDoc, PHPStan выдаст:

8   Property Foo::$foo has no type specified.

Как обойти это предупреждение? Кажется, я выполнил инструкции в https://phpstan.org/blog/solve-phpstan-no-value-type-specified-in-iterable-type

Это не докблок, а обычный комментарий.

Álvaro González 19.06.2024 08:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
131
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Судя по вашим выводам, я думаю, что вам не хватает *, поэтому у вас есть комментарий, а не объявление строки документации.

<?php   
class Foo {
    /**
     * @var array<string>
     */
    private array $foo; }

Да! Спасибо, я это упустил из виду.

Aayla Secura 19.06.2024 09:29

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