2012-03-11 80 views
3

我需要一些幫助,因爲我似乎無法理解這個概念。yii和非數據庫模型

在框架中,即Yii,我們創建了與database tables相對應的模型。我們從CActiveRecord擴展它們。但是,如果我想創建一個從其他模型獲取一些數據的類,但是會根據這些結果執行所有計算並對它們執行某些操作...那麼我該如何繼續?

我想明確劃分責任,所以我不想把所有的計算放在源數據庫爲基礎的模型。基本上這個想法是,它會從某些模型中取出一些東西,然後用計算結果更新另一個模型。

我該怎麼辦?

  • 保留一些控制器中的所有計算並使用所需的模型? (對此猶豫不決,因爲有一個規則,以保持控制器苗條)
  • 創建一個無數據庫模型,然後從那裏工作(如何?)?
  • 做別的事(什麼?)?

感謝您的幫助!

回答

3

對於您使用Model的Yii 解釋,您將不得不創建類,這取決於CModel。這是一個抽象類,因此您將需要實施attributeNames()方法。

要在這個新結構中使用其他「模型」,您需要在構造函數中注入它們,或者在創建自定義模型之後注入它們。


真正的MVC模型是一個層,它主要包含兩組具有特定職責的類:域業務邏輯和數據訪問操作。負責域業務邏輯的對象不知道信息的存儲位置和來源。或者即使有「數據庫」之類的東西。

這段視頻或許可以解釋了一下:https://vimeo.com/21173483

+0

大視頻資源!將檢查出來。謝謝! – RandomWhiteTrash 2012-03-11 22:25:24

+0

@RandomWhiteTrash,你可以[在這裏下載幻燈片](http://qafoo.com/talks/11_11_osidays_advanced_oo_patters.pdf)。 – 2012-03-11 22:45:14