2010-10-08 2 views
4

У меня есть электронный магазин с несколькими типами продуктов. И я бы подумал о следующей структуреПроблема структуры PHP ООП, имитировать множественное наследование

Cart_Item 
-- Cart_Product 
-- Cart_Download 

Order_Item extends Cart_Item 
-- Order_Product 
-- Order_Download 

Проблема заключается в том, что я хочу иметь Order_Product расширить Order_Item и Cart_Product. Это связано с тем, что ему требуется метод generic для Order_Item (получить цену от заказа не от продукта), но также методы из Cart_Product (расчеты доставки)

Я знаю, что php не поддерживает множественное наследование, я блуждал, что является самым чистым способ подражать этому.

Прямо сейчас у меня есть Order_Product удлиняет код товара Cart_Product с Order_Item в Order_Product a Order_Download.

+1

@ Гордон спасибо за ваш ответ, я использовал композицию. Спасибо –

ответ

12

Либо используйте Interfaces и реализуйте методы вручную или через Strategies. Или используйте Composition вместо Наследования, то есть вы дадите Order_ProductOrder_Item и Cart_Product.

На стороне: вы также можете подумать о том, чтобы сделать «вычисления доставки» в свой собственный класс обслуживания, с которым вы можете передать соответствующие экземпляры продукта.

+1

+1 Интерфейсы - это путь сюда. – NullUserException

+1

Предпочитайте композицию над наследованием, если у вас нет оснований для этого: http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance – Guillaume

+0

+1 для вас, Гордон;) –

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