Когда инструмент анализа кода, такой как phpstan или psalm, предупреждает вас о несоответствии типов, есть несколько способов с ним справиться.
Скорее всего, вы хотите изменить сигнатуру метода, а затем обработать случаи, сообщение жалуется, например, так:
public function getUser(UserInterface $user = null)
{
if (null === $user || ! $user instanceof User) {
// do something about the wrong types, that you might get from getSecurity()->getUser(), e.g. return or throw an exception
throw Exception(sprintf('Expected App\\Entity\\User, got %s', $user === null ? 'null' : get_class($user)));
}
... your logic
}
Теперь ваш метод принимает как интерфейс, так и ноль, которые могут попасть туда. Вы также можете выполнить обработку ошибок перед вызовом метода getUser и оставить все как есть, поэтому вместо getUser($this->security->getUser());
:
$temporaryUser = $this->security->getUser();
if (!$temporaryUser instanceof User) {
throw Exception(sprintf('Expected App\\Entity\\User, got %s', $user === null ? 'null' : get_class($user)));
}
getUser($temporaryUser);
Если вы уверены, что код не столкнется с проблемами, вы можете также игнорируйте определенные сообщения об ошибках, создав phpstan.neon
в вашем проекте root. См .: https://github.com/phpstan/phpstan#ignore -ошибка-сообщения-с-регулярными выражениями