我可以从父项 class 中创建子项 class 吗?
Can I create a child class out of a parent class?
假设我有一个 class 负责编写另一个 class:
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
属性 更新为具有相同 [=23] 的 ChildClass
实例=] 值作为当前的 BaseClass 对象。我该怎么做?
public function update()
{
// $this->baseClass = new ChildClass() with the current property values in BaseClass
}
我不确定你的整体方法是否正确,但唯一的方法是循环并设置:
public function update()
{
$new = new ChildClass();
foreach($this->baseClass as $name => $value) {
$new->$name = $value;
}
$this->baseClass = $new;
//or
$this->baseClass = clone $new;
}
假设我有一个 class 负责编写另一个 class:
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
属性 更新为具有相同 [=23] 的 ChildClass
实例=] 值作为当前的 BaseClass 对象。我该怎么做?
public function update()
{
// $this->baseClass = new ChildClass() with the current property values in BaseClass
}
我不确定你的整体方法是否正确,但唯一的方法是循环并设置:
public function update()
{
$new = new ChildClass();
foreach($this->baseClass as $name => $value) {
$new->$name = $value;
}
$this->baseClass = $new;
//or
$this->baseClass = clone $new;
}