这是我的代码:
interface ValidatorInterface
{
public function hasErrors ();
public function validate (stdClass $metadata);
public function getFeedback ();
}
abstract class ValidatorAbstract implements ValidatorInterface
{
protected $feedback;
public function __construct ()
{
$this->feedback = new FormFeedback();
}
public function getFeedback ()
{
return $this->feedback;
}
public function hasErrors ()
{
return $this->getFeedback()->hasErrors();
}
}
class RegistrationValidator extends ValidatorAbstract
{
public function validate (stdClass $metadata)
{
$this->getFeedback()->addError('Testing');
return !!$this->hasErrors();
}
}
这是错误:
致命错误:Class RegistrationValidator 包含1个抽象方法,因此必须声明为abstract或 实现其余的方法 (ValidatorInterface :: hasErrors)
抽象类ValidatorAbstract
满足ValidatorInterface
强加hasErrors()
和getFeedback()
方法的要求。
课程RegistrationValidator
扩展ValidatorAbstract
并满足声明validate()
方法的最后剩余要求。
为什么我会收到一条错误,指出RegistrationValidator
包含一个抽象方法,如果没有,并且当该方法已经由其父类实现时必须实现hasErrors()
? / p>
答案 0 :(得分:0)
确保您发布的代码与您正在运行的代码相同。在您发布的示例中,每个抽象方法都在层次结构中的某个位置实现,代码运行正常。
还要确保您正在编辑的文件是正在运行的副本(可以缓存)。
答案 1 :(得分:-2)
在抽象类中,您需要至少有一个抽象方法。
abstract protected function someFunction();
一个好的做法是不要将任何代码放入抽象类中。