“类包含1个抽象方法,因此必须声明为abstract或实现其余方法(parent :: hasErrors)”

时间:2014-08-26 19:51:13

标签: php interface abstract-class

这是我的代码:

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>

2 个答案:

答案 0 :(得分:0)

确保您发布的代码与您正在运行的代码相同。在您发布的示例中,每个抽象方法都在层次结构中的某个位置实现,代码运行正常。

还要确保您正在编辑的文件是正在运行的副本(可以缓存)。

答案 1 :(得分:-2)

在抽象类中,您需要至少有一个抽象方法。

abstract protected function someFunction();

一个好的做法是不要将任何代码放入抽象类中。