0

たとえば、次の 2 つのクラスがあります。

class A {
  protected $x, $y;
}

class B {
  protected $x, $z;
}

それらのそれぞれで、配列からデータを埋めるメソッドが必要です。ということで万能フィラーが書けるので、一度このコードを書いてみたいと思います。

5.4 では、トレイトによって次のような記述が可能になると思います。

protected function fill(array $row) {
  foreach ($row as $key => $value) {
    $this->$$key = $value;
  }
}

そしてそれを使うだけです。

しかし、5.3 でこれを行うにはどうすればよいでしょうか。

4

1 に答える 1

2

抽象クラスを使用し、機能を共有するクラスにそれを拡張させる

abstract class Base
{
    protected function fill(array $row) {
        foreach ($row as $key => $value) {
            $this->{$key} = $value;
        }
    }
}

class A extends Base {
    protected $x, $y;
}

class B extends Base {
    protected $x, $z;
}
于 2013-06-24T09:09:00.437 に答える