Назначьте родительские переменные в дочернем классе как переданный экземпляр в php - PullRequest
0 голосов
/ 26 августа 2018

Здравствуйте, коллега-программист,

Я хочу передать экземпляр родительского класса конструктору 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;
    }
}

1 Ответ

0 голосов
/ 26 августа 2018

Один из способов сделать это (но не использовать наследование) - посмотреть на создание «гуманизированной» функции, которая добавляет данные / функции в ваш класс следующим образом:

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.

...