【发布时间】:2014-08-26 19:51:13
【问题描述】:
这是我的代码:
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();
}
}
这是错误:
致命错误:类 RegistrationValidator 包含 1 个抽象方法,因此必须声明为抽象方法或 实现剩下的方法 (ValidatorInterface::hasErrors)
抽象类ValidatorAbstract 满足ValidatorInterface 提出的具有hasErrors() 和getFeedback() 方法的要求。
RegistrationValidator 类扩展 ValidatorAbstract 并满足声明validate() 方法的最后一个要求。
为什么我会收到一个错误消息,指出 RegistrationValidator 包含一个抽象方法,而实际上它没有,并且当该方法已由其父类实现时,它必须实现 hasErrors()?
【问题讨论】:
-
请提供一个完整的可运行示例。我无法重现错误。
标签: php interface abstract-class