【发布时间】:2015-03-27 13:17:27
【问题描述】:
我对课程还很陌生。我不明白为什么我的扩展类不会继承它的父属性,作为他们的集合。它似乎在其构造函数值处继承属性。
确保继承当前值的正确方法是什么?
class Form {
public $data = array();
public $TheValue;
public function __construct($data) {
$this->data = $data;
}
public function UpdateTheValue($x){
$this->TheValue = $x;
}
}
class FormField extends Form {
public function __construct() {
parent::__construct();
}
}
$data = array(1,2,3);
$Form = new Form($data);
$Form->UpdateTheValue('the value should be this');
$FormField = new FormField();
这是 $FormField 的结果
FormField Object
(
[TheValue] =>
[data] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
如您所见,TheValue 为空。
谢谢。
【问题讨论】:
-
它没有继承父值,因为您创建了一个新实例...如果您首先简单地创建
FormField,您可以使用$FormField->UpdateTheValue(...)设置值,但奇怪的是,我不确定为什么它没有发出有关必需参数的警告,因为new FormField();有效地调用new Form()而没有任何$data(应该是必需的) -
谢谢。我需要事先在脚本中调用 Form。后来根据情况,引入FormField。所以我想知道如何保持 Form 中的设置值?