私はベースクラスList
はほぼ純粋な配列です。 すべての商品の注文番号が の場合、注文リストOrderedList
があります。CheckboxList
チェックボックスがすべての商品の前にある場合(リストにはブール値が格納されています)。より多くのクラスからのメソッドの取得
今、私は順序付けられたチェックボックスリストクラスを持っています。したがって、2つのクラスを継承する必要があります。これを回避するには?
私はベースクラスList
はほぼ純粋な配列です。 すべての商品の注文番号が の場合、注文リストOrderedList
があります。CheckboxList
チェックボックスがすべての商品の前にある場合(リストにはブール値が格納されています)。より多くのクラスからのメソッドの取得
今、私は順序付けられたチェックボックスリストクラスを持っています。したがって、2つのクラスを継承する必要があります。これを回避するには?
もちろん、PHPは多重継承をサポートしていません。最先端を行く準備ができているなら、PHP 5.4で特色を使うことができます。それ以外の場合は、「PHPミックスイン」のグーグルでミックスインの実装を見つけてください。
まずは、すべての場合、あなたはcomposition over inheritanceを好むべきです。 「複数のクラスから継承できますか?」というのは、設計上の瑕疵がある場合は、その兆候である可能性があります。とにかく
、あなたは「注文したチェックボックスのリストクラス」を必要とするならば、構造は次のようになります。
class OrderedList extends List{}
class CheckboxList extends OrderedList{}
PHPで形質が実際にあるので、また、私は、このケースでは特性の使用を避けることを示唆しています解釈補助者はコピー&ペーストを補助した。これには明確な利点はありません。
Btwのように、もう1つの方法があります:CheckboxListはListを拡張していますが、それを注文する責任がある他のオブジェクトがあるかもしれません。あなたがList
クラスのArrayAccess
を実装している場合は、組み込みのsort()
/usort()
関数(またはフィールドの格納方法によってはksory()
/uksort()
)を使用することができます。
一部のコードサンプル(正確には[SSCCE](http://sscce.org/))は必須です – Lion
コードを過ぎてください。とにかく、複数の継承については、Traitsについて読むことができます。 PHPの新機能(バージョン5.4.0)。 http://php.net/manual/en/language.oop5.traits.php – Cloudson