Используйте композицию, например, чтобы класс Search имел массив источников, где каждый источник является экземпляром класса Source, где вы определяете, что является общим для источника, и передаете параметры для каждого из источников A и B.
Идея здесь, если неясно, заключается в том, чтобы класс Source возвращал данные из источников и позволял бы классу Search выполнять поиск. Насколько это практично или эффективно, зависит от фактического источника и способа поиска
class Search {
private $sources = array();
public Search($p1,$p2,$p3,$p4) {
//Use proper parameters to define the sources
$sources[] = new Source("A",$p1,$p2,$p3,$p4);
$sources[] = new Source("B",$p1,$p2,$p3,$p4);
}
public function fetch() {
foreach ($source in $sources) {
$results[] = $source->fetch();
}
combine($results);
}
}
class Source {
//Whatever you need to define the source
public function fetch() {
//Fetch from the proper source
}
public Source($name,$p1,$p2,$p3,$p4) {
//Store the parameters to be able to operate
}
}