我正在使用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 '('
答案 0 :(得分:0)
该功能定义为:
function setUsername($username);
所以你的功能必须相同,但是你的功能缺少参数。添加它,你应该没事。
这实际上与Symfony2或FOS Bundle没有任何关系,这就是PHP通常的工作方式。因此,请尝试更正确地理解错误消息。下次当您看到错误消息时,您无法完全理解,请具体询问错误消息以及您不清楚的部分。只是说:直接询问您想要了解的部分。不是你尝试要做的部分(尝试没有错,只是说,我们都是边做边学。但关键是要问正确的问题;)