生成实体FOSMessageBundle& FOSComment捆绑

时间:2014-10-07 07:45:29

标签: symfony doctrine-orm

我已经连续7个小时了。在她睡觉之前,妻子离开了我的工作并且醒来了同样的视线=沮丧!

任务看似简单,使FOSMessageBundle可以使用或不使用FOSCommentBundle。我首先尝试了一起,然后一个人独自尝试,并在所有3个案例中继续得到相同的错误。

  

FatalErrorException:编译错误:Acme \ MessageBundle \ Entity \ Thread :: setCreatedBy()声明必须与FOS \ MessageBundle \ Model \ ThreadInterface :: setCreatedBy(FOS \ MessageBundle \ Model \ ParticipantInterface $参与者)兼容.. 。\ src \ Acme \ MessageBundle \ Entity \ Thread.php第15行

以下是第15行。

注意:我已阅读并遵循文档到最后一个完整停止。我的代码就像文档一样。但为什么它不能工作?我正在使用最新的Symfony 2.5并清理安装捆绑包。任何帮助都是永远受到赞赏的。感谢。

<?php
// src/Acme/CommentBundle/Entity/Thread.php

namespace Acme\CommentBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\CommentBundle\Entity\Thread as BaseThread;

/**
 * @ORM\Entity
 * @ORM\ChangeTrackingPolicy("DEFERRED_EXPLICIT")
 */

class Thread extends BaseThread
{

1 个答案:

答案 0 :(得分:0)

错误消息Declaration of … must be compatible with …是一条通用的PHP消息,表明被覆盖的方法与其父或接口不兼容。

子方法必须与父项具有完全相同的参数,如果参数是类型提示,则为同一类的child method must type-hint

在您的情况下,您可能不会在ParticipantInterface方法中要求setCreatedBy兼容对象,在这种情况下,您需要像这样修复它...

public function setCreatedBy(ParticipantInterface $Participant)
{
    // …
}

...或者你错过了ParticipantInterface的名称空间导入:

use \FOS\MessageBundle\Model\ParticipantInterface;

或两者兼而有之。