2 つの異なるソースから結果を取得し、それらを結合するために使用している検索クラスがあります。Search クラスは親であり、Search を拡張する 2 つの子 A と B があります。
Search クラスには、2 つの子オブジェクトをインスタンス化して結果を取得する fetch() というメソッドがあります。次のようになります。
public function fetch(){
$a = new A($this);
$a_results = $a->fetch();
$b = new B($this);
$b_results = $b->fetch();
// code to combine the results here
}
クラス A と B のコンストラクタは次のようになります。
class A extends Search
{
public function __construct(Search $search){
parent::__construct($search->category, $search->offset, $search->keywords...);
}
親オブジェクトを子に渡し、まったく同じデータで別の親オブジェクトを作成しているという点で、何か間違っているように感じます。これを設定するより良い方法はありますか?
このように設定したのは、アプリケーションの一部が、親の Search クラスではなく、クラス A と B に直接アクセスする必要があるためです。