我有一個領域模型和一個表單,我總是發現將一個地圖映射到另一個表面是非常棘手的。我從不喜歡將一個映射器的實例傳遞給一個表單。將領域模型映射到Zend表單
是否有意義創建一個使用域模型映射器來設置窗體默認值的窗體映射器?或者我應該在接受設置默認設置的DomainModel的表單上創建一個方法?
選項1的缺點是FormMapper對DomainModelMapper具有依賴性,選項2的缺點是控制器變得更胖。
class DomainModel
{
function toArray() {}
}
class DomainModelMapper
{
function findById($id)
{
return new DomainModel($id);
}
}
FormMapper使用DomainModelMapper來填充MyForm。
class MyForm extends Zend_Form
{
}
class FormMapper
{
function getFormById($id)
{
$mapper = new DomainModelMapper();
$domainModel = $mapper->findById($id);
$form = new MyForm();
$form->setDefaults($domainModel->toArray());
return $form;
}
}
你是什麼意思的映射即什麼是形式和領域模型之間的關係,是領域模型的一個實例'zend_db_table_abstract' – 2011-02-24 13:43:29
DomainModel獨立於數據庫對象http://martinfowler.com/eaaCatalog/dataMapper.html ,我已經省略了數據庫層爲簡單 – gawpertron 2011-02-24 13:45:32
@gawperton檢查我的更新的答案 – 2011-02-24 13:50:35