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


How to override/overload setters of BaseUser (from 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 User中定义的字段和方法中。非常感谢

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

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

函数定义为:

function setUsername($username);

因此,您的函数必须相同,但您的函数缺少参数。加上它,你就应该没事了。

这实际上与Symfony2或FOS捆绑包无关,PHP通常就是这样工作的。因此,请尝试更正确地理解错误消息。下次当你看到一条你不完全理解的错误消息时,请具体询问错误消息和你不清楚的部分。只是说:直接询问您想要了解的部分。不是关于你尝试做的部分(尝试没有错,只是说,我们都是在做中学习的。但关键是要问正确的问题;)