どのように動的にそのタイプの変更のでクラスを拡張し、工場を作るが、それは親のメソッドを継承していますか?

StackOverflow https://stackoverflow.com/questions/2203538

質問

私は何をしたいのは、あなたが一連の属性を与えることができ、それが知られているクラスを拡張し、以前に宣言されていないクラスであるオブジェクトを返す静的ファクトリ関数を持っている。

基本的には:

<?php
class foo {
  public $a;

  function increment($b = 1){
    $this->a += $b;
  }
}

function factory($name, $a){
  //returns an object of class $name that extends foo with $this->a set to $a
}

ので、私はコードを書く場合:

<?php
$bar = factory("bar",12);
$bar->increment(5);
print_r($bar);
if(is_a($bar, "foo")){
  echo "is a Foo";
}
$moo = factory("moo", 4);
$moo->increment();
print_r($moo);
if(is_a($moo, "foo")){
  echo "is a Foo";
}

私が取得:の[編集]

bar Object
(
    [a] => 17
)
is a Foo
moo Object
(
    [a] => 5
)
is a Foo

しかし、私はこれを行うために必要なコマンドを探し始めるためにどこか分かりません。私は、新しい$の名前を構築し、私の工場の機能で、私は何とか$名の値は、親クラスを拡張し、それを変更しませんことを宣言する必要があると思います。そうすれば、それは、親クラスのすべての機能だけ異なるタイプがあります。

役に立ちましたか?

解決

PHPのリフレクションAPIをチェックアウトあなたが抽出し、そこに新しいクラスを構築しますが、それをやって、それのインスタンスを作成に取り掛かるする方法がわからないイムする必要があるメソッドを持っています。モッキングはPHPUnitの中でどのように機能するかイムはかなり確信して、これがあるので、私はしかし、その可能性を知っていますか。あなたはまた、同様にいくつかのアイデアを取得するにはPHPUnitの様々なモックオブジェクトに関連するクラスを見てみたいことがあります。

あなたが実際に/オーバーロードするメソッドを追加している場合を除き、なぜあなたもこれをしたいと述べたこと?理由だけではなく、オブジェクトのプロパティを使用するか、またはインターフェイスを使用していませんか?いただきました!ここでの目標は?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top