두 개의 다른 소스에서 결과를 가져와 함께 결합하는 검색 클래스가 있습니다. Search 클래스는 부모이며 검색을 확장하는 두 개의 자식 A와 B가 있습니다.부모 개체를 사용하여 하위 클래스를 구성하는 것은 나쁜 습관입니까?
검색 클래스에는 결과를 얻기 위해 두 개의 자식 개체를 인스턴스화하는 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에 직접 액세스해야하기 때문에이 방법으로 설정했습니다.
Do A와 B 모두 fetch 메소드를 구현합니까? 그렇지 않으면 무한 루프가 발생합니다. Search를 확장하는 것이 실제로 원하는 대상이 아닌 것 같습니다. 대신 A 및 B 클래스는 검색 객체의 속성을 사용하기 위해 Search 객체를 __construct 매개 변수로 가져와야합니다. – localshred
예, A와 B는 모두 서로 다른 로직을 가진 fetch() 메소드를 가지고 있습니다. 아마도 A와 B는 검색을 확장 할 필요가 없지만 객체를 구성하는 데 필요한 동일한 멤버와 메소드를 사용해야하므로 검색을 확장하는 것이 좋습니다. –
네가 맞다. 이런 식으로 Search 클래스를 확장하는 것은 의미가 없다. 검색 개체를 전달한 다음 속성에 액세스하면됩니다. 이것을 답안에 넣으면이를 받아 들인 해결책으로 표시 할 수 있습니다. –