товара, есть общий интерфейс, есть дто базовая и дто расширяемая от базовой, для каждого поставщика (некоторым нужна доп инфа).
Phpstan ругается 'access to an undefined property price'. Но типы параметров могут же быть расширены (solid). Что я делаю не так?
https://phpsandbox.io/e/x/duhq2
У вас в BuyProductDto нет price, а функция buy(BuyProductDto|BuyFirstProductDto $dto) предполагает, что price есть как у FirstProductProvider, так и у BuyProductDto.
Почитай про ковариантность и контравариантность
типы могут быть расширены до тех пор пока ты соблюдаешь LSP (SOLID)
Обсуждают сегодня