如何在扩展类中获得var?

时间:2014-03-26 11:24:29

标签: php

我希望有各种类扩展情感类,每个类定义情绪,以便可以在扩展类中使用。

我的问题是,如何在扩展课程中获得情绪变量,这是我到目前为止所拥有的:

这是我的班级:

class Happy extends Emotions{

    protected $mood = 'happy';

}

以下是它的内容:

class Emotions {


public function __construct(){

    var_dump($this->mood);
    die();
}

另一个问题是,这是最好的解决方法吗?我想拥有一套核心方法,但为班级改变各种变量,所以我的情绪课有所有的方法,然后我有一些条款,'快乐','悲伤','愤怒'哪个扩展它并设置特定的变量。

1 个答案:

答案 0 :(得分:0)

您可以在父类中定义属性,然后在子类中对其进行修改。这样你就可以在父类上访问它。

class Emotions {

    protected $mood = "";

    public function setMood($mood)
    {
        $this->mood = $mood;
    }
}

关于这是否是一个好方法的问题,这在很大程度上取决于你想要达到的目标。如果你的孩子的情绪类只是一组属性,那可能不是,因为你不会为不同的情绪添加不同的功能。

另一方面,如果你想为每种情绪添加特定的功能,但同时所有的情感都有一些共同的功能,那么可以创建一个父类来拥有这些共同的功能,这样你就不会重复代码。

例如:

class Emotion {

    protected $mood = "";

    public function express(){
        echo "I am " . $this->mood;

    }

}

class Happy extends Emotion {

    protected $mood = "happy";

    public function dance(){
        echo "Oh! Yeah!";

    }

}

class Sad extends Emotion {

    protected $mood = "sad";

    public function cry(){
        echo "buaaah!";
    }

}

正如你所看到的,所有情绪都会有一种方法表达,但快乐可以跳舞,悲伤可以哭泣。