Laravel アプリケーションでボブおじさんのクリーン アーキテクチャを適用しようとしています。
私が懸念しているのは、ボブおじさんが説明しているように、コントローラーは3番目のサークルであるインターフェイスアダプター(インサイドアウトから)に属している必要があることです。これは、コントローラーがユース ケース サークル (2 番目) のみに依存し、4 番目のサークルのフレームワークについて何も認識しないことを意味します。
ただし、一部のフレームワークのコントローラーは、基本クラス (たとえば、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,
];
}
}