Привет
Вопрос:
Как лучше решить проблему с ворнингами от анализаторов при использовании методов конкретной реализации через DI интерфейсами?
Конкретные примеры:
1. прокидывание SerializerInterface, а использование методов Serializer-a, например denormalize(), которого нет в SerializerInterface;
2. прокидывание ValidatorInterface, а использование методов RecursiveValidator-a, например getMetadataFor(), которого нет в ValidatorInterface.
В чем проблема: при использовании методов, отсутствующих в интерфейсах, анализатор(phpstan) кидает предупреждения вида:
Call to an undefined method Symfony\Component\Serializer\SerializerInterface::denormalize().
Пример
Есть DI:
/** @var SerializerInterface */
private $serializer;
public function __construct(SerializerInterface $serializer)
{
$this->serializer = $serializer;
}
Надо где-то внутри этого сервиса использовать, например:
$object = $this->serialized->denormalize($array, BlahBlah::class);
Проще говоря: анализатор будет подсвечивать denormalize() как undefined.
Как решал раньше:
добавлял в исключения анализаторов такого рода ошибки, связанные со стандартными интерфейсами от Symfony
в иных случаях старались переделывать интерфейсы