Как заставить PhpStorm понимать тип репозитория Doctrine

Я использую Symfony 3.4 с Doctrine, и вот как я получаю один из своих репозиториев:

$members = $this->getDoctrine()->getRepository(Member::class)->getAllMembersForClient($client);

При разработке с помощью PhpStorm среда IDE не знает, что возвращает метод getRepository(Member:class), и поэтому не предлагает автозаполнение. Итак, он показывает мне ошибку при вызове метода getAllMembersForClient($client)

Есть хороший способ исправить это? Как другие пользователи Doctrine решают эту проблему?

Я подумал, что плагин Symfony должен позаботиться об этом ... Если нет и использование промежуточной переменной для набора текста нежелательно - попробуйте Metadata (это сделано для таких случаев) - confluence.jetbrains.com/display/PhpStorm/…

LazyOne 20.05.2018 18:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
1 422
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Самый простой способ - использовать временную переменную и подсказку типа:

/* @var $membersRepository MemberRepository */
$membersRepository = $this->getDoctrine()->getRepository(Member::class);
$members = $membersRepository->getAllMembersForClient($client);

Спасибо за подсказку - я этого еще не знал. Очень полезно.

Mathias Bader 03.06.2018 16:21
Ответ принят как подходящий

Дважды проверьте, что вы установили плагин «Symfony», поскольку он обычно обеспечивает функциональность, позволяющую распознать, что getRepository(Member::class) вернет репозиторий, определенный аннотациями (или другими средствами) в PHPStorm.

Вы должны найти его в меню: Настройки> Плагины> {поиск "symfony"}. Если его еще нет в списке, выберите «Обзор репозиториев ...» под списком подключаемых модулей.

Вы должны включить его для каждого проекта (Файл> Настройки> Языки и фреймворк> PHP> Symfony), а также установить плагин Php Annotation.

Спасибо, Алистер, в этом есть большой смысл. В настоящее время плагин Php Annotation отображается как несовместимый с текущей версией PhpStorm. Так что я с нетерпением жду исправления для этого.

Mathias Bader 20.05.2018 19:44

Были некоторые предыдущие (довольно свежие) версии PHPStorm, которые были отмечены как несовместимые. Обновления Storm и плагина исправили это, и я запускаю 2018.2 EAP, выпущенный 17 мая 2018 года, и плагин Symfony v0.16.165 без каких-либо проблем.

Alister Bulman 20.05.2018 21:30

Другие вопросы по теме