Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/snails8/laravel-ddd
PHP Laravel × DDD sample & 遊び場
https://github.com/snails8/laravel-ddd
Last synced: 15 days ago
JSON representation
PHP Laravel × DDD sample & 遊び場
- Host: GitHub
- URL: https://github.com/snails8/laravel-ddd
- Owner: Snails8
- Created: 2022-01-16T12:29:11.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-01-16T23:42:59.000Z (about 3 years ago)
- Last Synced: 2024-10-18T16:21:31.246Z (4 months ago)
- Language: PHP
- Size: 721 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## setup
```
$ make install
```
## 開発時 コマンド
```
// 環境立ち上げ
$ docker-compose up// sass js 監視
$ docker-compose exec app npm run watch// サーバー設定変更時
$ docker-compose build
$ docker-compose up// 各種ライブラリ変更時
$ docker-compose exec app composer install
$ docker-compose exec app npm install
```## オレオレコマンド
```
// controller主体crud
php artisan make:controller XxxController --resource// 即席CRUD(Service主体)
$ docker-comose exec app php artisan make:controller XxxController --model=XXX
$ docker-comose exec app php artisan make:service XxxService
$ docker-comose exec app php artisan make:crudtest XxxTest```
## 運用時
task-definition で定義する環境変数をgithub secret に格納してください
```
AWS_ACCESS_KEY_ID
AWS_ACCOUNT_ID => AWS console login > username(右上) > マイアカウント: account id
AWS_SECRET_ACCESS_KEY
LOKI_ID
LOKI_SECRET
SECURITY_GROUPS
SUBNETS
```
ECS > クラスター > 選択 > 詳細 から確認## アーキテクチャ
laravel default の構成に一部クリーンアーキテクチャの思想を導入
Layer 毎に分離しその中でDomainで分離している
```
app/
│
├── Http/Controllers
│ ├── { DomainName } // 扱う事業領域名
│ │ ├── Controller // 各種controllerの責務を持った処理
│ │ └── ...
│ ├── { DomainName }
│ ├── { DomainName }
│ ├── ...
│ ...
├── Http/Requests
│ ├── { DomainName } // 扱う事業領域名
│ │ ├── request // 各種validationの責務を持った処理
│ │ └── ...
│ ├── { DomainName }
│ ├── { DomainName }
│ ├── ...
│ ...
├── Models
│ ├── { db_Name } // db定義
│ ├── { db_name }
│ ├── ...
│ ...
├── Service
│ ├── { DomainName } // 扱う事業領域名
│ │ ├── Service // 各種controllerの責務を持った処理
│ │ └── ...
│ ├── { DomainName }
│ ├── UtilityService // どのアプリケーションでも使える処理
│ ├── ...
│ ...
├── Repository
│ ├── { DomainName } // 扱う事業領域名
│ │ ├── repository // 各種controllerの責務を持った処理
│ │ └── ...
│ ├── { DomainName }
│ ├── { DomainName }
│ ├── ...
│ ...
```責務
```
Controller : 入力(httpリクエスト)を受け取り、適切な処理系に値を渡し、レスポンスを返す
Request : バリデーション
Service : 中核的なロジック
repository : Eloquent Model は極力ココでのみ使用
```## 課題
```
・現状の構成のままではマイクロサービスに対応できない。
・中規模のアプリケーションまでなら対応可能
・Eloquent Model 依存の設計
・大規模化した際の命名問題
・〇〇の肥大化と数百行に渡った際の複数人の作業リスク増加
・UtilityService のルールがないため、文化を浸透させないとくちゃくちゃになる
・認可処理を切り出していない( Laravel Policy)
```俗に言う技術駆動パッケージング(or Package by Layer )