Привет товарищ программист,
я хочу передать экземпляр родительского класса конструктору childs, и вместо того, чтобы давать каждому члену родительского элемента дочерний элемент, я подумал, что может быть более простой способ назначить родительский элемент сразу. Вот моя мысль.
class Human {
public $health = "200";
public function __construct( $health ) {
$this->health = $health;
}
}
class Monster extends Human {
public function __construct( \Human $human ) {
parent::$this = $human;
}
}
$unit = new \Monster( new \Human );
Возможно ли что-то подобное или даже что-то подобное вместо этого:
class Monster extends Human {
public function __construct( \Human $human ) {
$this->health = $human->health;
}
}
Один из способов сделать это (но не использовать наследование) — посмотреть на создание «гуманизированной» функции, которая добавляет данные / функции в ваш класс следующим образом:
const humanize = (WrappedComponent, health) => {
let w = new WrappedComponent();
w.health = health;
w.getHealth = function() {
return this.health;
}
return w;
}
class Monster {
}
const monster = humanize(Monster, 200);
console.log(monster.getHealth());
Это позволяет вам «гуманизировать» любой класс / объект, который вам нравится; когда вы делаете это, он добавляет член здоровья и функцию getHealth.
Других решений пока нет …