好的,我知道有类似的问题,但他们并没有完全回答我的问题。我有一个相当长的课程,并决定分手。它的大部分是一组函数,用于确定是否更改某个值(在父类和数据库中)。我所拥有的问题是继承,我显然不理解。
问题在于,在执行某些功能之前,不会确定父类中的属性。我需要子类中的那些属性,以便在子类完成其操作后更新父类中的属性。正因为如此,一个简单的新孩子"不会工作(或者会不会?),因为尚未在新创建的父级中确定属性。
我试图不再实例化父类的另一个实例,以便再次重新填充属性。但与此同时,我不需要在父实例化时始终实例化子类。
这是我想要做的......
class parentClass
{
public $value1;
public $value2;
public $value3;
public function getValues()
{
$this->curValues();
$chi = new childClass();
$chi->updValues();
echo var_dump($this->value1, $this->value2, $this->value3);
}
public function curValues()
{
$this->value1 = 'first value';
$this->value2 = 'second value';
}
}
class childClass extends parentClass
{
public function updValues()
{
if (2 > 1) {
$this->value2 = 'blue value';
$this->value3 = 'third value';
}
}
}
$hmm = new ParentClass();
$hmm->getValues();
输出
first value
second value
预期输出
first value
blue value
third value
我觉得我忽略了一些非常简单的事情。我怎样才能做到这一点?或者我的思维过程完全离开了?
答案 0 :(得分:1)
您无法从其父级调用子级方法,但可以从子级调用父方法。
根据您尝试实现的最终结果,您可以尝试覆盖子类中的一个父方法。例如:
class childClass extends parentClass
{
public function curValues()
{
$this->value1 = 'first value';
if (2 > 1) {
$this->value2 = 'blue value';
$this->value3 = 'third value';
}
}
}
然后创建子类的实例而不是父类:
$hmm = new childClass();
$hmm->getValues();