PHP - 将父类实例的所有属性传递给子实例

时间:2014-06-15 05:44:55

标签: php

我有一个方法可以创建子类的实例并复制其属性。我使用$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 {

}

2 个答案:

答案 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循环将变量迭代回子对象。如果你有很多变数,可能会更快。

编辑:这是一个字典,其中键是变量名,值是实际变量。

相关问题