Получение методов из большего количества классов в php - PullRequest
0 голосов
/ 18 марта 2012

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

Теперь яхочу иметь упорядоченный список флажков класса.Так что он должен наследовать 2 класса.Как обойти это?

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Сначала, если все, вы должны отдать предпочтение композиции перед наследованием .Возможно, ваше «могу ли я наследовать от нескольких классов» является признаком недостатка дизайна.

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

class OrderedList extends List{}

class CheckboxList extends OrderedList{}

Кроме того, я бы предложил в этом случае избегать использования черт, потому что Черты в php на самом деле являются поддержкой Copy'n'Paste с помощью интерпретатора.Для этого нет явного преимущества.

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

1 голос
/ 18 марта 2012

PHP, конечно, не поддерживает множественное наследование.Если вы готовы к передовой линии, вы можете использовать черты в PHP 5.4.В противном случае, попробуйте Googling "PHP mixins", чтобы найти реализацию mixin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...