2012-02-23 259 views
4

我最近發現的是,我正在跨應用程序的多個層進行編碼以實現非常簡單的事情。模型邏輯和服務層邏輯

例如

$domain = new Application_Model_Domain(); 
$table = $domain->getMapper()->getDbTable(); 
$row = $table->find($id)->current(); 
$row->delete(); 

這可能都很容易可以在delete()方法在我的服務層完成。但是,我一直在將這個功能轉移到模型映射器中:

# service layer 
$domain = new Application_Model_Domain(); 
$domain->getMapper()->delete($id); 

# mapper 
function delete($id) { 
    $table = $this->getDbTable(); 
    $row = $table->find($id)->current(); 
    $row->delete(); 
} 

您認爲哪種方法最有效?

回答

1

使您的模型映射器中包含的功能可以幫助您避免在應用程序的多個位置重複代碼(即強制執行DRY原則),並使調試和代碼修改變得更容易lot

0

在我看來,所有數據庫相關的操作必須在模型層。因此,只需使用現有的模型層,您就可以替換邏輯層,而無需重寫相同的代碼。

0

一般來說,最好有一個單獨的數據訪問層。這是一個衆所周知的模式,稱爲數據訪問層(DAO)。因爲,如果你仔細想想,數據訪問並不屬於模型或服務層。服務層可以使用DAO層。