0
我目前正在使用RedBean作爲我的ORM層使用基於MVC的項目(無框架)。紅豆讓我create models通過擴展RedBean_SimpleModel
類:如何處理這種多重繼承?
MyModel extends RedBean_SimpleModel{
}
的問題是,我還使用依賴注入。有一個叫做AContainer
的特殊抽象類,希望能夠訪問DI容器的類可以擴展。這允許依賴注入框架在創建對象期間通過方法將DI容器的副本注入到該類中。然後,可以使用$this->get('classname');
從DI容器中獲取內容。
在這種情況下,我需要我的模型擴展RedBean_SimpleModel
和AContainer
。但我們都知道多重繼承是充滿了problems。
除了製作RedBean_SimpleModel
副本,並調用它像CModel
,然後修改它來擴展AContainer
,如下圖所示,有什麼模式或方式來解決這個問題呢?
class CModel extends AContainer{
//copy all the methods from RedBean_SimpleModel and paste it here.
}
嗯,爲什麼要遵循DI的想法,你需要繼承**所有**你的類從基礎?!優先考慮繼承(c) – zerkms
@zerkms,請詳細說明。 Symfony2也使用類似的容器注入類:http://api.symfony.com/2.0/Symfony/Component/DependencyInjection/ContainerAware.html – F21
DI/IoC與所需的繼承無關。這只是關於您檢索依賴對象的方式。我更喜歡有一個獨立的容器對象(這不是我的所有類的父對象),並在需要的任何地方使用它。 – zerkms