PHP OO:覆盖抽象类的属性

Ste*_*ook 2 php oop

有人可以建议吗?

我们有一个抽象的基类,它有一些属性和一些方法.

从继承类调用方法(带参数),通常的目的是将传递的参数设置为基类的属性,除非它们看起来不会覆盖默认值.

如果我在abstract(base)类的构造函数中设置了一个值(用于测试目的)它工作正常,并且传递给构造函数的任何其他东西都可以工作,但我们想要做的是获取setErrors方法来实际设置属性的值.

例:

//abstract base class

private $errors = array();//the property we want to overide

public function __construct()
{
$this->errors[] = "This is a required field";//for testing purposes only this works
}

public function setErrors($error)
{
var_dump($error);//this proves that $error is passing something...
$this->errors[] = $error;//this doesnt work(override the property)
var_dump($this->error);//the property now has the $error value...
}

public function getErrors()
{
return "<li>".implode("</li>\n",$this->errors);
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否与基类是抽象的有关,即它没有被实例化.请有人解释为什么这不起作用?提前感谢您的兴趣.

编辑我们不是要试图从基层继承私有财产

我们想要做的是使用set方法覆盖属性,然后使用公共get方法返回属性.

Art*_*cto 5

您将该errors字段声明为私有,因此只有声明它的类(抽象超类)才能访问它.

您可以创建它,protected以便子类可以访问它或setErrors在超类中实现该方法.