2013-03-25 32 views
1

我有一個使用MVC模式的問題;我創建了多個模型,我使用它們中的每一個來處理分組任務(連接,數據庫等)。MVC:這些模型應該是靜態的嗎?

問題是,在創建基本模型後,我結束了這樣的代碼(在控制器內)。

class Controller 
{ 
    function doStuffz() 
    { 
     $accounts = new AccountsModel(); 
     $DB  = new DBModel(); 
     $HTML  = new HTMLModel(); 
     //More models... 

     $accountData = $accounts->getAccount($id); 
     $DB->saveAccount($accountData); 
     $HTML->display($accountData); 
     //More code... 
    } 

} 

我已經內(幾乎)在我的課的所有功能創建模型的實例,即使它看起來絕對精品,使之靜。

read this questions about when to use static methods,應用「經驗法則」後,似乎所有這些模型應該是靜態的,這是MVC模式中的一個不好的做法?

如果我做這些模型的靜態,我可能會落得這樣的:

class Controller 
{ 
    function doStuffz() 
    { 

     $accountData = AccountModel::getAccount($id); 
     DBModel::saveAccount($accountData); 
     HTMLModel::display($accountData); 
     //More code... 
    } 

} 

裏面居然讓我更有意義,也它看起來更清潔和更短。

回答

0

DBModel,HTMLModel實際上不是模型,它們是服務。

使用靜態方式很方便,但它有缺點:全局範圍,緊密依賴,難以測試。

+0

它們與模型有什麼不同?我的意思是,我看過類似「模型」的類,它完全像DBModel(運行查詢)。 – Abdulaziz 2013-03-25 02:10:03

+0

@AzizAG,好的。你抓住了我:^)。我不知道如何真正將服務和模型分開。我喜歡這[問題](http://stackoverflow.com/questions/5702391/mvcs-model-view-controller-service)。 – sectus 2013-03-25 03:25:26

+0

無論該類是服務還是模型,它都應該是靜態的。很公平。 – Abdulaziz 2013-03-26 02:41:09

相關問題