代码之家  ›  专栏  ›  技术社区  ›  zerkms

是否可以为PHPDoc的调用者端为参数指定显式类型

  •  3
  • zerkms  · 技术社区  · 7 年前

    有一个方法调用表达式:

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

    哪里 setUser

    public function setUser(UserAccount $user): self
    

    $this->em->getReference 作为一个理论的实体管理器方法返回 object|null .

    因此PhpStorm将此调用标记为不匹配的参数参数类型。

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

    但有没有办法做到内联呢?

    2 回复  |  直到 7 年前
        1
  •  3
  •   weirdan    7 年前

    我很确定他们所说的是可能的 PHPStorm advanced metadata . 据我所知,你想要这样的东西(你可能需要实验)

    override(\Doctrine\ORM\EntityManagerInterface::getReference(0), map([
        '' => '@'
    ]))
    
        2
  •  3
  •   SCIF    7 年前

    不幸的是,没有这样的语言特性,您只能依赖PHPDoc或Symfony插件来实现PHPStorm。

    Symfony plugin claims 仅下一个功能:

    • 条令getRepository的参考和类型提供者
    • EntityRepository的TypeProvider::find/findOneBy/findAll/findBy
    • 场与关系的解析与注释与yaml

    你可以用 find*() 上述方法或PHPDoc溶液。请记住,根据可能返回 null 无效的

    有一个关于Github的问题 getReference() resolving

    推荐文章