【发布时间】:2017-04-14 14:54:01
【问题描述】:
我正在尝试在 Laravel 应用程序中向 Bob 叔叔申请 Clean Architecture。
我关心的是:正如鲍勃叔叔所描述的,控制器应该属于第三个圈子:接口适配器(从内到外)。这意味着Controller只依赖于Use Case Circle(第2个),并且不应该对第4个循环中的框架有任何了解。
但是有些框架中的controller需要扩展一个基类(比如一个AbstractController类),它还需要接收一个Request对象,有时还需要返回一个Response对象,所以这有点打破了依赖规则 清洁架构,因为它知道外圈的框架。
我误会了吗?如果没有,有什么解决方案可以不破坏依赖规则?
我的控制器看起来像这样:
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,
];
}
}
【问题讨论】:
标签: controller clean-architecture dependency-rule