我有一个方法可以创建子类的实例并复制其属性。我使用$child->property = $this(parent)->propery
为每个属性实现此目的。有没有办法一口之内完成所有这一切,而不必重复代码来定义每个单独的属性?
扩展示例:
class parent {
public $foo
$bar
$gib
public function foobar() {
$child = new child;
$child->foo = $this->foo;
$child->bar = $this->bar;
$child->gib = $this->gib;
}
}
class child extends parent {
}
答案 0 :(得分:3)
通过将子构造函数的逻辑放在父级中,您正在破坏继承的目的。您不希望父类能够看到孩子的类型。
请考虑以下代码。
class Parent {
protected $foo;
protected $bar;
public function __construct($foo, $bar) {
$this->foo = $foo;
$this->bar = $bar;
}
}
class Child extends Parent {
public function __construct($foo, $bar) {
parent::__construct($foo, $bar);
}
}
这里,子进程自己实例化父类的属性。儿童阶层有责任这样做。
相关阅读 - http://www.php.net//manual/en/language.oop5.decon.php
答案 1 :(得分:-1)
您可以将父对象变量打包在关联数组中,并使用foreach循环将变量迭代回子对象。如果你有很多变数,可能会更快。
编辑:这是一个字典,其中键是变量名,值是实际变量。