Но вот недавно начал применять, на практике нечто подобное, и, как всегда это бывает, начали появляться подводные камни.
Например ситуация (выдуманная но хорошо описывающая проблему), есть у нас такие участники:
1. Два actions
- update-post на который приходят title и text поста
- quick-update-post на который приходит только title
2. Интерфейс:
Код: Выделить всё
interface UpdatePostRequestInterface
{
public function getTitle();
public function getText();
}
Код: Выделить всё
class UpdatePostRequest extends Model implements UpdatePostRequestInterface
{
public function getTitle(){
return $this->title;
}
public function getText(){
return $this->text;
}
}
Код: Выделить всё
class UpdatePostService
{
public function execute($post, UpdatePostRequestInterface $request)
{
$post->title = $request->getTitle();
$post->text = $request->getText();
}
}
Какие-то костыльные решения, могу придумать. Например добавить в класс метод fillDefault($post), или передавать $post в конструктор UpdatePostRequest и затем заполнять поля модели. Но такое решение не очень нравится.
Подскажите, пожалуйста, как более правильно разрулить эту ситуация? Может слишком перемудрил с этими объектами реквестов?