Этот код вызывает ошибку:
/**
* @var EntityManagerInterface
*/
private EntityManagerInterface $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
parent::__construct();
}
Мой composer.json использует
"php": ">=7.1.3",
И я использую Symfony 4.4, что является обязательным требованием для моей работы.
Где-то в Интернете я обнаружил, что этот тип ошибки вызван устаревшей версией php, но я не уверен, так ли это в данной конкретной ситуации. У меня вопрос, могу ли я написать код по-другому или единственный вариант - перейти на более высокую версию php?
Спасибо за это объяснение, теперь оно имеет смысл для меня.
Вы можете сказать об этом своему боссу и посмотреть, не сможет ли ваша команда выполнить обновление до PHP 7.4 или даже 8.0. Иногда возникают проблемы, препятствующие обновлению, но иногда это просто потому, что никто не подумал об этом.
Да, это хорошее предложение, спасибо.






Вам не нужно ставить
EntityManagerInterface
в объявлении переменной.
Итак, замените
private EntityManagerInterface $entityManager;
От
private $entityManager;
Его зависимость Injection уже добавлена в параметры функции Constructor:
public function __construct(EntityManagerInterface $entityManager)
Спасибо, сэр, это сработало.
@FDjawid, добро пожаловать !!!
Это Объявление типа. php.net/manual/en/language.types.declarations.php: «Объявления типа могут быть добавлены к аргументам функции, возвращаемым значениям, и, начиная с PHP 7.4.0, свойства класса».