2012-03-18 1 views
-1

У меня есть базовый класс List - это почти чистый массив. У меня есть упорядоченный список OrderedList, когда все товары получили номер о заказе У меня есть флажок CheckboxList, когда перед всеми элементами установлен флажок (в списках хранится логическое значение).Получение методов из большего количества классов в php

Теперь я хочу иметь упорядоченный класс списка флажков. Поэтому он должен наследовать 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. В противном случае попробуйте Googling «PHP mixins», чтобы найти реализацию mixin.

2

Прежде всего, вы должны одобрить composition over inheritance. Возможно, ваш «я могу наследовать от нескольких классов» является признаком недостатка дизайна.

В любом случае, если вам нужно «заказать флажок списка класс», то структура должна быть:

class OrderedList extends List{} 

class CheckboxList extends OrderedList{} 

Кроме того, я хотел бы предложить, чтобы избежать использования черты в данном случае, потому что Черты характера в PHP на самом деле Интерпретатор скопировал копию. Для этого нет явной выгоды.

Кстати, есть еще один подход, на который вы можете обратить внимание: в то время как CheckboxList расширяет List, у вас может быть другой объект, ответственный за его заказ. Черт, если вы внесете ArrayAccess в класс List, вы можете использовать только встроенную функцию /usort() (или ksory()/uksort() в зависимости от того, как вы храните поля) .. думал, что я не пробовал это на самом деле.

Смежные вопросы