2012-03-18 10 views
-1

기본 클래스가 List 인 것은 거의 순수한 배열입니다. 모든 항목에 주문에 대한 번호가있는 경우 주문 목록 OrderedList이 있습니다. 체크 박스가 모든 항목 앞에있는 경우 CheckboxList 확인란이 있습니다 (목록에는 부울 값이 저장 됨).더 많은 클래스의 메소드 가져 오기

이제 주문형 체크 박스 목록 클래스가 필요합니다. 따라서 2 개의 클래스를 상속 받아야합니다. 이 문제를 해결하는 방법?

+3

일부 코드 샘플 (간결하게 [SSCCE] (http://sscce.org/))은 필수적입니다. – Lion

+0

코드를 지나야합니다. 어쨌든 다중 상속에 관해서는 형질에 관해 읽을 수 있습니다. PHP의 새로운 기능 (버전 5.4.0). http://php.net/manual/en/language.oop5.traits.php – Cloudson

답변

1

물론 PHP는 다중 상속을 지원하지 않습니다. 최후의 준비가 되었다면 PHP 5.4에서 특성을 사용할 수 있습니다. 그렇지 않으면, "PHP mixins"을 검색하여 mixin 구현을 찾으십시오.

2

우선, 모두라면 composition over inheritance을 선호해야합니다. 디자인 상 결함이 있다면 "여러 클래스에서 상속받을 수 있습니까?"라는 사인이 될 수 있습니다. 당신이 "주문 확인란 목록 클래스"를 필요로하는 경우

어쨌든, 그 구조는 다음과 같아야합니다 또한

class OrderedList extends List{} 

class CheckboxList extends OrderedList{} 

, 내가이 경우 특성을 사용하지 않도록 제안, 특색 PHP에서 실제로 때문에 통역사는 Copy'nPaste를 지원했습니다. 이것에 대한 명확한 이점은 없습니다.

Btw와 같은 다른 접근법이 있습니다. CheckboxList는 List를 확장하지만 사용자는이를 주문하는 다른 객체를 가질 수 있습니다. 지옥, List 클래스의 ArrayAccess을 구현하면 sort()/usort() 함수 (또는 필드 저장 방법에 따라 ksory()/uksort())를 사용할 수 있습니다. 실제로 시도하지 않은 것 같습니다.

관련 문제