Задать вопрос
@Tereverda

PHPStan проверка свойства класса при наследовании?

Есть класс A
от него наследуюется класс В
В классе "В" создаются новые свойства.

В Классе С есть метод, который принимает на вход объекты наследники класса A, проверка по тайпхинту.
PHPStan ругается, что свойство не определено, если свойство внести в родительский класс А, все нормально проходит, но мне такая логика не нужна.

Как изменить код или настройки анализа кода?

Ошибка
Access to an undefined property
https://phpstan.org/blog/solving-phpstan-access-to...

class A
{
}

class B extends A
{
public $options;
}

class C
{
public static function price(A $objectB) -- тут возникает ошибка
}


Сам код работает корректно, только проверка кода ругается.
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@nolotion
стан тебе все правильно говорит - ты объявляешь параметр объекта класса A, а обращаешься к атрибутам которых там нет.
если у тебя кейс "а я так не вызываю" - то и пиши правильную сигнатуру метода: public static function price(B $objectB)

потому что если твой говнокод в классе C будет использовать другой разработчик - то он передаст тебе какой-нибудь объект D extends A без опшинов и будет прав, потому что ты сам написал такой контракт
а твой код упадет
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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