SOA в Symfony2

В настоящее время я внедряю сервис-ориентированную архитектуру в Symfony2, и я хотел бы получить наши рекомендации по этому поводу.

Я хочу знать, что мне нужно обрабатывать в контроллере, и что мне нужно обрабатывать в сервисе.

Экстремальным решением было бы передать Request к сервису, и он будет реализовывать всю логику (в основном Doctrine, так как я разрабатываю API, а не «полный» сайт с Twig, например), а затем отправлять обратно Responseв контроллере.

Это означает, что я должен был бы создать такой код:

В сервисе:

if (null === $entity) {
throw new \Exception('Not found.', self::NOT_FOUND);
}

И в контроллере:

try {
$service->doThings();
}
catch (\Exception $e) {
if ($e->getCode() === Service::NOT_FOUND) {
return new Response($e->getMessage(), 404);
}
}

С потенциально одним условием для каждого исключения, которое я должен бросить.

Это хороший путь? Я совершенно не прав насчет реализации?

0

Решение

Все, что связано с логикой контроллеров (например, принять запрос, ответить на запрос, создать форму, связать параметры, извлечь объект из БД (лучше с ParamConverter), получать и устанавливать объекты сеанса, перенаправления и т. д.) должны храниться в контроллерах.

Все остальное можно перенести в сервисы (или другие классы)

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]