Как бороться с этим множественным наследованием? - PullRequest
0 голосов
/ 28 ноября 2011

В настоящее время я работаю над проектом на основе MVC (без фреймворков), используя RedBean в качестве слоя ORM.RedBean позволяет мне создавать модели , расширяя класс RedBean_SimpleModel:

MyModel extends RedBean_SimpleModel{

}

Проблема в том, что я также использую внедрение зависимостей.Существует специальный абстрактный класс AContainer, который могут расширять классы, которые хотят иметь доступ к DI-контейнеру.Это позволяет инфраструктуре внедрения зависимостей внедрить копию контейнера DI в этот класс с помощью метода во время создания объекта.Затем можно использовать $this->get('classname');, чтобы получить что-то из контейнера DI.

В этом случае мне нужно, чтобы моя модель расширила как RedBean_SimpleModel, так и AContainer.Но все мы знаем, что множественное наследование чревато проблемами .

Помимо создания копии RedBean_SimpleModel и вызова ее как-то вроде CModel, а затем изменения ее для расширения AContainer какпоказано ниже, есть ли какие-либо шаблоны или способы решения этой проблемы?

class CModel extends AContainer{
  //copy all the methods from RedBean_SimpleModel and paste it here.
}

1 Ответ

0 голосов
/ 11 декабря 2011

ИМХО вам не нужно внедрять зависимости с моделями RedBeanPHP.Вы можете использовать его из RedBean_Facade, если хотите.

Модели RedBeanPHP подключаются к компонентам на лету, поэтому они уже разъединены.Нет никакой зависимости между компонентом и моделью RedBeanPHP.Вы можете проверить свои модели самостоятельно.

...