【发布时间】:2011-08-14 22:53:11
【问题描述】:
请有人帮忙解决以下问题?
我们有以下课程:
- 抽象类元素{}
- 抽象类容器扩展 元素{}
- 抽象类字段扩展 容器{}
“元素”基类具有以下属性和方法:
//Element class
private $errors = array();
public function __construct()
{
}
public function setError($error)
{
$this->errors[] = $error;
}
public function getErrors()
{
return "<li>".implode("</li>\n",$this->errors);
}
“容器”只是对元素(对象)进行分组。
'Field' 类调用基类的 'setError' 方法并传递如下值:
//Field class
$this->setError("foo");
由于某种原因,基类中的 'errors' 属性没有获得添加到它的值,我猜这与对象的实例化方式有关,因为显然抽象类默认情况下没有实例化。
该字段的唯一实例是它的继承形式,即:
Text extends Field{}
$field = new Text(etc, etc)
你会如何解决这个问题?
【问题讨论】:
-
能否展示元素和字段类的完整代码
-
对于下一个投票否决的人来说,这个问题怎么不清楚?
-
“优先于类继承的对象组合。” (c) GoF