扩展类功能必须实现接口

时间:2020-06-17 14:59:20

标签: php symfony

我有Article类,它扩展了捆绑包类Article

class Article extends BaseArticle

BaseArticle的方法为getImages

/**
 * {@inheritdoc}
 */
public function getImages(): Collection
{
    return $this->images;
}

问题是调用此方法时出现此错误:

Return value of Odiseo\BlogBundle\Model\Article::getImages() must implement interface Doctrine\Common\Collections\Collection, null returned

我不太确定如何获得null,因为这仅发生在管理面板中,并且在公共文章页面中效果很好。扩展实体会出现问题吗?

1 个答案:

答案 0 :(得分:0)

某处,一行

$this->images = new ArrayCollection();

丢失或被阻止(请注意,您需要为此使用{:use Doctrine\Common\Collections\ArrayCollection;的使用子句)。

我在这里看到两种可能的原因:

  1. BaseArticle(因此,捆绑包中的Article)在其__construct()中没有前面提到的行。
  2. BaseArticle具有该行,但是您的Article的构造函数会覆盖(不调用父构造函数)并因此阻止了它,因此应调用父构造函数或自己拥有该行。

这两种原因均导致方法返回null,因为该属性未正确初始化(正确的初始化将在最上面一行),这显然未实现Collection接口,因此错误消息。

或者,将images属性设置为null