如何在父类和子类之间传递属性?

时间:2016-11-26 22:00:19

标签: php

好的,我知道有类似的问题,但他们并没有完全回答我的问题。我有一个相当长的课程,并决定分手。它的大部分是一组函数,用于确定是否更改某个值(在父类和数据库中)。我所拥有的问题是继承,我显然不理解。

问题在于,在执行某些功能之前,不会确定父类中的属性。我需要子类中的那些属性,以便在子类完成其操作后更新父类中的属性。正因为如此,一个简单的新孩子"不会工作(或者会不会?),因为尚未在新创建的父级中确定属性。

我试图不再实例化父类的另一个实例,以便再次重新填充属性。但与此同时,我不需要在父实例化时始终实例化子类。

这是我想要做的......

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

我觉得我忽略了一些非常简单的事情。我怎样才能做到这一点?或者我的思维过程完全离开了?

1 个答案:

答案 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();