Можно ли указать явный тип для параметра на стороне вызывающего для PHPDoc - PullRequest
0 голосов
/ 30 августа 2018

Существует выражение вызова метода:

$session->setUser($this->em->getReference(UserAccount::class, $ownerId));

, где setUser объявлено как

public function setUser(UserAccount $user): self

$this->em->getReference, будучи менеджером сущностей Doctrines, возвращает object|null.

Таким образом, PhpStorm помечает этот вызов как несовпадающий тип аргумента-параметра.

Я, конечно, могу разделить его на 2 оператора и напечатать:

/** @var UserAccount $userAccount */
$userAccount = $this->em->getReference(UserAccount::class, $ownerId);
$session->setUser($userAccount);

Но может быть, есть способ сделать это inline?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Я уверен, что это возможно с помощью так называемых расширенных метаданных PHPStorm . Насколько я понимаю, вы хотите что-то подобное (возможно, вам придется поэкспериментировать)

override(\Doctrine\ORM\EntityManagerInterface::getReference(0), map([
    '' => '@'
]))
0 голосов
/ 30 августа 2018

К сожалению, такой языковой функции нет, и вы можете положиться только на PHPDoc или плагин Symfony для PHPStorm.

Поскольку Плагин Symfony требует только следующие функции:

  • Поддержка QueryBuilder, включая цепочки и вложенные методы
  • Ссылки и TypeProvider для доктрины getRepository
  • TypeProvider для EntityRepository :: find / findOneBy / findAll / findBy
  • Поле и разрешение отношений и аннотации и yaml

Вы можете использовать find*() методы или решение PHPDoc, показанное выше. Пожалуйста, имейте в виду, что в зависимости от возможности вернуть null методами Doctrine, плагин все равно покажет вам предупреждение о передаче null в качестве необнуляемого аргумента.

Существует проблема Github по поводу getReference (), разрешающей .

...