@OnlyMyQuestion

Почему phpstorm перестал проверять тип возвращаемого значения из phpdoc при реализации интерфейса, возвращающего массив?

Добрый день. Пример Проблемы:
class Entity
{

}

interface IFace
{
    /**
     * @return Entity[]
     */
    public function get(): array;
}

class DTO
{

}

interface Repo
{
    /**
     * @return DTO[]
     */
    public function get(): array;
}

class Impl implements IFace
{
    private Repo $repo;

    public function __construct(Repo $repo)
    {
        $this->repo = $repo;
    }

    /**
     * @return Entity[]
     */
    public function get(): array
    {
        return $this->repo->get();
    }
}


Метод Impl::get не подсвечивается, как некорректный.
Если же убрать у IFace и Impl array из типа возвращаемого значения:
class Entity
{

}

interface IFace
{
    /**
     * @return Entity[]
     */
    public function get();
}

class DTO
{

}

interface Repo
{
    /**
     * @return DTO[]
     */
    public function get(): array;
}

class Impl implements IFace
{
    private Repo $repo;

    public function __construct(Repo $repo)
    {
        $this->repo = $repo;
    }

    /**
     * @return Entity[]
     */
    public function get()
    {
        return $this->repo->get();
    }
}

То все подсвечивается корректно.
Раньше такой проблемы не наблюдалось, не заметил как появилась, настройки не менял, обновления все ставились автоматом. Пробовал сбросить настройки, создать другой проект - ничего не изменилось.
Можно ли решить?
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
alekciy
@alekciy
Вёбных дел мастер
Решить вероятно получится только через отправку обратной связи разработчикам. В целом понятно, как так вышло. Запилили приоритет типизации уровня языка над типами docblock.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы