• Stars
    star
    144
  • Rank 254,366 (Top 6 %)
  • Language
    PHP
  • Created over 5 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

LaraClean

Clean Architecture sample with Laravel

Laravel で実践クリーンアーキテクチャの形に組んでみました。
詳しい解説は下記解説をご覧ください。
Laravelで実践クリーンアーキテクチャ: https://qiita.com/nrslib/items/aa49d10dd2bcb3110f22

また次の記事もあわせていただくと参考になるでしょう。
実践クリーンアーキテクチャ: https://nrslib.com/clean-architecture/
実装クリーンアーキテクチャ: https://qiita.com/nrslib/items/a5f902c4defc83bd46b8

どれがどれにあたるか

どの実装が図におけるどれにあたるかを書いておきます。

同心円

いつもの

いつもの図です。

Controllers

  • App\Http\Controllers\UserController

UseCases

  • packages\UseCase\User\Create\UserCreateUseCaseInterface
  • packages\UseCase\User\GetList\UserGetUseCaseInterface
  • packages\Domain\Application\User\UserCreateInteractor
  • packages\Domain\Application\User\UserGetListInteractor
  • packages\MockInteractor\User\MockUserCreateInteractor
  • packages\MockInteractor\User\MockUserGetInteractor

Entities

  • packages\Domain\Domain 以下

Presenters

MVC フレームワークにおいては相性が悪いので採用していません。
ただ Laravel では再現できる方法があるという情報を聞いているので調査後実装予定です。

Gateways

  • packages\Domain\Domain\User\UserRepositoryInterface
  • packages\Infrastructure\User\UserRepository
  • packages\InMemoryInfrastructure\User\InMemoryUserRepository

Interface と Adapter です。

同心円の図の右下

右下の図

案外わかりやすい右下の図です。

Controller

  • App\Http\Controllers\UserController

通常の MVC フレームワークのコントローラです。
ヘキサゴナルアーキテクチャのアダプタにあたります。

UseCaseInputPort

  • packages\UseCase\User\Create\UserCreateUseCaseInterface
  • packages\UseCase\User\GetList\UserGetUseCaseInterface

UseCaseInteractor

  • packages\Domain\Application\User\UserCreateInteractor
  • packages\Domain\Application\User\UserGetListInteractor
  • packages\MockInteractor\User\MockUserCreateInteractor
  • packages\MockInteractor\User\MockUserGetInteractor

UseCaseOutputPort

このプロジェクトでは採用していません
UseCaseOutputPort を採用したプロジェクトは次の URL をどうぞ!
https://github.com/nrslib/StrictLaraClean

Presenter

このプロジェクトでは採用していません
Presenter を採用したプロジェクトは次の URL をどうぞ!
https://github.com/nrslib/StrictLaraClean

クラス図

クラス図みたいなの

左上から書いていきます。

Controller

  • App\Http\Controllers\UserController

InputData

  • packages\UseCase\User\Create\UserCreateRequest
  • packages\UseCase\User\GetList\UserGetRequest

InputBoundary

  • packages\UseCase\User\Create\UserCreateUseCaseInterface
  • packages\UseCase\User\GetList\UserGetUseCaseInterface

UseCaseInteractor

  • packages\Domain\Application\User\UserCreateInteractor
  • packages\Domain\Application\User\UserGetListInteractor
  • packages\MockInteractor\User\MockUserCreateInteractor
  • packages\MockInteractor\User\MockUserGetInteractor

Entities

  • packages\Domain\Domain 以下

DataAccessInterface

  • packages\Domain\Domain\User\UserRepositoryInterface

OutputData

  • packages\UseCase\User\Create\UserCreateResponse
  • packages\UseCase\User\GetList\UserGetResponse

OutputBoundary

このプロジェクトでは採用していません
OutputBoundary を採用したプロジェクトは次の URL をどうぞ!
https://github.com/nrslib/StrictLaraClean

Presenter

このプロジェクトでは採用していません
Presenter を採用したプロジェクトは次の URL をどうぞ!
https://github.com/nrslib/StrictLaraClean

ViewModel

  • App\Http\Models 以下

More Repositories

1

itddd

C#
287
star
2

CleanArchitecture

C#
141
star
3

play-clean-java

Java
124
star
4

PracticeOfCleanArchitecture

C#
49
star
5

BottomUpDDD

C#
39
star
6

StrictLaraClean

PHP
37
star
7

scrum-app-sample-php

PHP
36
star
8

microservice-with-event-sourcing-sample-kotlin

Kotlin
21
star
9

BottomUpDDDTheLaterPart

C#
18
star
10

CleanArchitectureSample

C#
16
star
11

HexagonalArchitectureSample

C#
14
star
12

clarc-laravel-plugin

PHP
12
star
13

repository-support-php

Support creating repository by file.
PHP
12
star
14

itddd-java

Java
10
star
15

cfg

PHP
8
star
16

event-driven-sample-kotlin-spring

Kotlin
8
star
17

pubsubdoc

Java
8
star
18

GettingStartedVueJsWithTypescript

Vue
7
star
19

akka-in-action-kotlin

Accompanying source code for Akka in Action by Kotlin
Kotlin
7
star
20

clarc-php-core

PHP
6
star
21

eventdriven-in-spring-jjug-ccc-2021-fall

Java
6
star
22

vue-sample-assortment

Vue
6
star
23

clarc-php-concept

PHP
5
star
24

scrum-app-java-spring-boot

Java
5
star
25

ClArc.CLI

C#
5
star
26

itoop-python

Python
4
star
27

PHPerKaigi-2021

PHPerKaigi 2021 のセッション用サンプルコードです
PHP
4
star
28

gihyo_software_design_clean_architecture_sample

Java
4
star
29

introduction-to-frontend

HTML
3
star
30

microservice-practice-ec-system

Kotlin
2
star
31

CompetentResponse

C#
2
star
32

explain-ddd-sample-project-java

DDD講義用サンプルプロジェクトです
Java
2
star
33

introduction-to-react-front-end

TypeScript
2
star
34

workshop-react-spring

Kotlin
2
star
35

ClArc-CSharp

C#
2
star
36

itoop-java

Java
2
star
37

my-docker-compose-files

1
star
38

NrsSpear

C#
1
star
39

explain-ddd-samples-java

DDD講義用サンプルコード
Java
1
star
40

NrsLib.CSharpToTypescriptInterface

C#
1
star
41

NrsLib.ClassFileGeneratorCSharp

C#
1
star
42

AWS-Serverless-Application-kotlin

Kotlin
1
star
43

akka-microservice-ec-system-kotlin-practice

Kotlin
1
star
44

Nrslib.AspNetCore.MockServer

C#
1
star
45

workshop-service-tf

HCL
1
star
46

CSharpTrivialCodeStack

C#
1
star
47

workshop-cicd-service

HCL
1
star
48

workshop-cicd-tf

HCL
1
star
49

itoop-typescript

TypeScript
1
star
50

axon-microservice-sample-java

Java
1
star
51

python-eventsourcing-fastapi-sample

Python
1
star