Я пытаюсь применить Clean Architecture от дяди Боба в приложении Laravel.Контроллер в чистой архитектуре
Что я имею в виду: Как говорит дядя Боб, Контроллер должен принадлежать третьему кругу: Адаптеры интерфейса (из наизнанку). Это означает, что Контроллер зависит только от Use Case Circle (2nd) и не должен знать ничего о структуре в 4-м круге.
Но контроллер в некоторых рамках должен расширяет базовый класс (например, класс AbstractController), он также должен получить объект запроса, а иногда и возвращают объект ответа, так что это своего рода нарушить правило зависимость от Clean Архитектура, поскольку она знает о структуре во внешнем круге.
Не понимаю ли я? Если нет, то есть решение не нарушать правило зависимости?
Мой контроллер выглядит так:
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use User\UseCase\FetchUsers;
use User\UseCase\FetchUsersRequest;
class UserController extends Controller
{
public function index(Request $request, FetchUsers $fetchUsersUseCase)
{
$useCaseRequest = new FetchUsersRequest(
// extract data from Request
);
$useCaseResponse = $fetchUsersUseCase->handle($useCaseRequest);
return [
'users' => $useCaseResponse->users,
];
}
}
У меня уже есть ** DTO **. Но диспетчер упоминает Laravel в третьем круге (используя некоторые классы «Illuminate»), так ли это нарушает правило зависимостей? –
Если вы определяете DTO на втором круге, вы не нарушаете никакого правила зависимости – cokceken