Я использую Symfony 3.4 с Doctrine, и вот как я получаю один из своих репозиториев:
$members = $this->getDoctrine()->getRepository(Member::class)->getAllMembersForClient($client);
При разработке с помощью PhpStorm среда IDE не знает, что возвращает метод getRepository(Member:class), и поэтому не предлагает автозаполнение. Итак, он показывает мне ошибку при вызове метода getAllMembersForClient($client)
Есть хороший способ исправить это? Как другие пользователи Doctrine решают эту проблему?






Самый простой способ - использовать временную переменную и подсказку типа:
/* @var $membersRepository MemberRepository */
$membersRepository = $this->getDoctrine()->getRepository(Member::class);
$members = $membersRepository->getAllMembersForClient($client);
Спасибо за подсказку - я этого еще не знал. Очень полезно.
Дважды проверьте, что вы установили плагин «Symfony», поскольку он обычно обеспечивает функциональность, позволяющую распознать, что getRepository(Member::class) вернет репозиторий, определенный аннотациями (или другими средствами) в PHPStorm.
Вы должны найти его в меню: Настройки> Плагины> {поиск "symfony"}. Если его еще нет в списке, выберите «Обзор репозиториев ...» под списком подключаемых модулей.
Вы должны включить его для каждого проекта (Файл> Настройки> Языки и фреймворк> PHP> Symfony), а также установить плагин Php Annotation.
Спасибо, Алистер, в этом есть большой смысл. В настоящее время плагин Php Annotation отображается как несовместимый с текущей версией PhpStorm. Так что я с нетерпением жду исправления для этого.
Были некоторые предыдущие (довольно свежие) версии PHPStorm, которые были отмечены как несовместимые. Обновления Storm и плагина исправили это, и я запускаю 2018.2 EAP, выпущенный 17 мая 2018 года, и плагин Symfony v0.16.165 без каких-либо проблем.
Я подумал, что плагин Symfony должен позаботиться об этом ... Если нет и использование промежуточной переменной для набора текста нежелательно - попробуйте Metadata (это сделано для таких случаев) - confluence.jetbrains.com/display/PhpStorm/…