Разные цепочки наследования. Возможно ли?

kos

Новичок
Разные цепочки наследования. Возможно ли?

Есть классы A B C D. Очень хочется сделать класс X наследник D,C,B,A и одновременно с ним класс Y наследник D,B,A. Сейчас делаю D1 наследник от C и D2 наследник от B, вынося функциональность по максимуму в функции. Но не удобно это, может есть какой-нибудь прием? Переделать все чтобы избежать такой ситуации возможности нет, приходится приспосабливать то что есть.
 

Adelf

Administrator
Команда форума
kos
Расшифруй, что это за классы такие, что они делают и с какой целью ты хочешь отнаследовать от них всех сразу.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Что мешает сделать B наследником A, C наследником B и т.д. и отнаследовать от D уже класс X?

Только тогда для класса Y будет не класс D, а класс D1, наследующий класс B, так как D уже есть и наследует класс C.

Не?

А вообще да, задача непонятная.
 

john.brown

просто кулибин
kos
а ты уверен, что хочеш именно наследовать? Может композиция больше тебе подходит?
 

Crys

Двинутый новичок
По моему топикстартеру множественное наследование надо, которого в PHP нет. Но можно сделать так - http://blog.kron0s.com/multiple-inheritance-php
 

kos

Новичок
Adelf
Речь идет о кустарном фреймворке, изначально не удачно спроектированном. Все это классы - контроллеры, в каждом добавляется/изменяется функциональность. Описывать их все много букв. Если коротко, в B есть ф-ция F, которая правильно работает для 10 модулей, а для 5 нужно изменить её поведение, оно меняется в C. Все нормально, пока для новых модулей не требуется новый функционал (из D) причем для части из них требуется ф-ция F из B, а части из C. Менять поведение C нельзя, потому что есть модули которые используют C. Понятно, что есть куча выходов, но все они требуют модификации C, а то и B(например объединить их определяя нужное поведение переменными, устанавливаемыми в дочерних классах). Но этого делать не хочется, в данном случаи проще сделать D1 и D2.

-~{}~ 30.08.10 17:38:

c0dex
Не получится, как уже писал ничего кроме D трогать не желательно и parent:: частенько используется.
john.brown
Возможно подойдет, тока смущает что эти ф-ции экспериментальные. Порою.
Crys
Да множественное наследование, решили бы проблему. В модели уже сделал, эмуляцию через __call, похожее на пример. А вот как приспособить это к контроллеру не додумался. Слишком там уже наворочено всяких parent:: self:: ...
 
Сверху