有一个方法调用表达式:
$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);
但是也许有一种方法可以内联吗?
答案 0 :(得分:3)
不幸的是,没有这样的语言功能,您只能依靠PHPDoc或Symfony插件来安装PHPStorm。
自Symfony plugin claims起,仅以下一项功能:
您可以使用上面显示的find*()
方法或PHPDoc解决方案。请记住,根据Doctrine方法可能返回null
的可能性,插件方式仍然会向您显示有关将null
作为不可空参数传递的警告。
关于getReference() resolving的Github问题。
答案 1 :(得分:3)
我非常确定他们所说的PHPStorm advanced metadata是可能的。据我了解,您想要这样的东西(您可能需要尝试)
override(\Doctrine\ORM\EntityManagerInterface::getReference(0), map([
'' => '@'
]))