メモ: Laravelの設計中に言語化した用語

  • Single Action Controller

    • __invoke() メソッドだけを持つコントローラ
  • ADR (Action Domain Controller)

    • MVC をサーバーサイド向けに洗練させたパターン
    • Single Action ControllerA の実装パターン
    • メリット
      • 各クラスのアクションを1つのみにする事で、「特定の アクション でのみ必要な依存クラス」の注入が発生しなくなる
    • デメリット
      • URL の数だけ、クラスが増える => クラスが増える事は、責務の明確化という意味でメリットにもなる
  • Domain vs Model

    • ADRDMVCM に大きな違いはない
    • 名前(呼び方)を変える事で、「DB=Model」ではなく、「ドメイン駆動設計」のパターンのほうを連想させているだけ
  • Domain vs UseCase

    • UseCaseDomain の要素の1つ
    • Domain の要素
      • UseCase
        • アプリケーション固有のビジネスルールをカプセル化したもの
      • Service
        • DBから値を取得する処理など
// クリーンアーキテクチャ的な DI の流れ

Eloquent => ORM
↓
Query / Command => 分離する事で、レコード数の増大やクエリの複雑化に伴う応答速度の低下を解消
↓
Repository => データアクセス処理を切り出し、データストアの参照先の変更に対応
↓
Service => DBから値を取得する処理など
↓
UseCase => ビジネスロジックをカプセル化, 実行時の振る舞いの仕様
↓
Controller