我希望有各种类扩展情感类,每个类定义情绪,以便可以在扩展类中使用。
我的问题是,如何在扩展课程中获得情绪变量,这是我到目前为止所拥有的:
这是我的班级:
class Happy extends Emotions{
protected $mood = 'happy';
}
以下是它的内容:
class Emotions {
public function __construct(){
var_dump($this->mood);
die();
}
另一个问题是,这是最好的解决方法吗?我想拥有一套核心方法,但为班级改变各种变量,所以我的情绪课有所有的方法,然后我有一些条款,'快乐','悲伤','愤怒'哪个扩展它并设置特定的变量。
答案 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!";
}
}
正如你所看到的,所有情绪都会有一种方法表达,但快乐可以跳舞,悲伤可以哭泣。