我正在尝试在Laravel应用程序中应用uncle Bob的Clean Architecture。我关心的是:正如uncle Bob所描述的那样,控制器应该属于第三个圆:接口适配器(从内向外)。这意味着控制器仅依赖于用例圆(第二个圆),不应了解第四个圆中的任何内容。
但是,在某些框架中,控制器必须扩展基类(例如AbstractController类)。它还需要接收Request对象,并有时返回Response对象,因此这种情况下破坏了Clean Architecture的依赖规则,因为它了解了外部圆中的框架。
我是否理解错误?如果没有,是否有任何解决方案可以不违反依赖规则?
我的控制器看起来像这样:
但是,在某些框架中,控制器必须扩展基类(例如AbstractController类)。它还需要接收Request对象,并有时返回Response对象,因此这种情况下破坏了Clean Architecture的依赖规则,因为它了解了外部圆中的框架。
我是否理解错误?如果没有,是否有任何解决方案可以不违反依赖规则?
我的控制器看起来像这样:
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,
];
}
}
Illuminate
类),这是否违反了依赖规则? - duy.ly