У меня есть Модель предметной области и Форма, и мне всегда было сложно сопоставлять одно с другим.Мне никогда не нравилось передавать экземпляр сопоставителя в форму.
Имеет ли смысл создавать преобразователь форм, который использует преобразователь модели домена для установки значений по умолчанию?Или я должен создать метод в форме, который принимает 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;
}
}