我一直在努力寻找一个解决方案,但我不能解决它,所以我会在这里提出我的问题,希望它能帮助其他人搜索同样的问题。
例如,我有一个基于“盔甲”的物品类。
class Armor {
public $name, $defense, $durability;
function __construct($name, $defense, $durability){
$this->name = $name;
$this->defense = $defense;
$this->durability = $durability;
}
}
然后我创建了一堆像这样的对象:
$heavy_armor = new Armor("Heavy Armor", 250, 50);
然后在一个完全不同的文件和用途,我有另一个类的魔法物品,这将创造一个全新的魔法物品,但我想使用的基础是已经存在的重型盔甲。 然而,这其中有一个圈套。 我已经扩展了一个不同的魔法盔甲职业,因为我将创造许多新的类,我希望所有魔法盔甲的共同属性都能保持在一个地方--魔法盔甲职业。 示例:
class MagicHeavyArmor extends MagicArmors {
public function __construct() {
$this->name = "Magic Heavy Armor";
// so here i want to point to the Defense and Durability of the $heavy_armor object
$this->defense = 625; // Ideally i want $this->defense = $heavy_armor->defense * 2.5
$this->durability = 87.5; // Same here - I want $this->durability = $heavy_armor->durability * 1.75
}
那我该怎么做呢? 原因是,我将创建一个巨大的负载这些,我希望他们所有能够从其他对象寻找他们的基本属性。 如果我需要改变一个财产的价值,以减轻以后的生活。
构造者应该以之前的护甲为参数,可以参考它的属性。
public function __construct($armor) {
$this->name = "Magic " . $armor->name;
$this->defense = $armor->defense * 2;
$this->durability = $armor->durability * 1.75;
}
然后创建对象,如下所示:
new MagicHeavyArmor($heavy_armor);