我使用的是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通常就是这样工作的。因此,请尝试更正确地理解错误消息。下次当你看到一条你不完全理解的错误消息时,请具体询问错误消息和你不清楚的部分。只是说:直接询问您想要了解的部分。不是关于你尝试做的部分(尝试没有错,只是说,我们都是在做中学习的。但关键是要问正确的问题;)