Doctrine php7+ 类型提示,代理声明错误

Doctrine php7+ type hinting, Declaration of Proxies error

我经常收到这个奇怪的错误

  Warning: Declaration of Proxies\__CG__\AppBundle\Entity\MyEntity::setName(string $name): 
  AppBundle\Entity\MyEntity should be compatible with AppBundle\Entity\MyEntity::setName(?string $name): 
  AppBundle\Entity\MyEntity

到底为什么会这样?为什么我不能

public function setName(?string $name): self
{
    $this->name = $name;

    return $this;
}

作为我的setter?如果我删除“?”,它会起作用,但我确实需要它用于其他目的

正如我在评论中提到的那样:根据 this issue 旧版本的 doctrine/common(特别是早于 2.7.1)如果您创建匹配的代理 class 可能会遇到问题正在使用可选参数类型提示。

更新 doctrine/common 似乎可以解决问题。