Могу ли я создать дочерний класс из родительского класса? - PullRequest
0 голосов
/ 29 мая 2018

Допустим, у меня есть класс, который отвечает за создание другого класса:

class ClassBuilder
{
    protected $baseClass;

    public function __construct()
    {
        $this->baseClass = new BaseClass();
    }

    public function set()
    {
        $this->baseClass->foo = 'bar';
    }

    // other methods to further modify BaseClass
}

class BaseClass
{
    public $foo;
}
class ChildClass extends BaseClass {}

Я хочу создать метод в ClassBuilder, который позволил бы мне обновить его свойство baseClass доэкземпляр ChildClass с теми же значениями свойств, что и у текущего объекта BaseClass.Как я могу это сделать?

public function update()
{
    // $this->baseClass = new ChildClass() with the current property values in BaseClass
}

1 Ответ

0 голосов
/ 29 мая 2018

Я не уверен, что ваш общий подход верен, но единственный способ - выполнить цикл и установить:

public function update()
{
    $new = new ChildClass();

    foreach($this->baseClass as $name => $value) {
        $new->$name = $value;
    }   
    $this->baseClass =  $new;
    //or
    $this->baseClass = clone $new;
}
...