如何覆盖/过载BaseUser的setter(来自FosUserBundle)?

时间:2012-07-19 21:01:05

标签: php symfony fosuserbundle

我正在使用Symfony 2.0。

我有一个从BaseUser扩展的Employee类

我需要覆盖setUsername方法(以及其他方法):

我的方法是Employee.php是这样的:

public function setUsername()
{
    $name=$this->getName();

    $this->username=($name);//just an example
}

但是当我清除缓存时出现错误:

MyBundle\Entity\Employee::setUsername() must be compatible with that of FOS\UserBundle\Model\UserInterface::setUsername()

编辑:
我已经看到FOS \ UserBundle \ Model \ UserInterface中的方法setUsername需要$username参数,但我定义的setUsername函数不需要这个参数。更一般地说,我的问题是如何重新定义/覆盖方法,以及如何将自己的约束添加到Fos用户中定义的字段和方法。非常感谢

如何覆盖此功能?我试过parent::setUsername(),但我有一个解析错误:

PHP Parse error:  syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting '('

1 个答案:

答案 0 :(得分:0)

该功能定义为:

function setUsername($username);

所以你的功能必须相同,但是你的功能缺少参数。添加它,你应该没事。

这实际上与Symfony2或FOS Bundle没有任何关系,这就是PHP通常的工作方式。因此,请尝试更正确地理解错误消息。下次当您看到错误消息时,您无法完全理解,请具体询问错误消息以及您不清楚的部分。只是说:直接询问您想要了解的部分。不是你尝试要做的部分(尝试没有错,只是说,我们都是边做边学。但关键是要问正确的问题;)