我試圖從Laravel應用程序中的叔叔Bob應用Clean Architecture。清潔架構中的控制器
我所關心的是:正如叔叔鮑勃所描述的,控制器應該屬於第三圈:接口適配器(從內向外)。這意味着Controller僅依賴於用例圓(第二),並且不應該知道第四個圓的框架。
但是控制器在一些框架具有延伸的基類(例如,一個AbstractController類),它也需要接收一個請求對象,並有時返回一個響應對象,所以這有點打破清潔的依賴關係規則架構,因爲它知道外圍的框架。
我誤解了嗎?如果不是有任何解決方案不打破依賴規則?
我的控制器看起來像這樣:
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