В настоящее время я работаю над проектом на основе 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.
}