【phpcon2018 アウトプット】独立したコアレイヤパターンによる PHP アプリケーションの実装
独立したコアレイヤパターンによる PHP アプリケーションの実装
背景
なぜ独立したコアレイヤパターンを実装するのか
- 対象ドメインが違うから
MVC + Service
レイヤードアーキテクチャ
- ドメインを中心
- 分離はできるが、それなりに複雑
- もう少しシンプルにできないか
ベースのアイデア
- WhatとHowをレイヤで分ける
- コアロジックと技術詳細(フレームワーク含む)の分離
- 守るべきシンプルなルールのみを決める
独立したコアレイヤパターン
- アーキテクチャパターンの1つ
- 2つのレイヤに分離
- コアレイヤ
- コアロジックを実装
- アプリケーションレイヤ (旧:サービスレイヤ)
コアレイヤ
- コアロジック (What) を実装
- Plain PHP
- フレームワークに依存しない
- データ構造や操作などの一部ライブラリは利用
- コアレイヤのみに依存
- 技術詳細はインターフェイス経由で利用
- ユースケース、ドメインモデルなど
技術詳細インターフェイス
要求をインターフェイスにする
依存関係逆転の放送
- Solid原則のD
- レイヤやモジュール間の依存関係をインターフェイスを利用して逆転させる
依存関係逆転の法則
ユースケースはインターフェイスに依存 アダプタがコアレイヤのインターフェイスに依存 * 依存関係が
アプリケーションレイヤ
まとめ
- コアレイヤとアプリケーションレイヤに分離
- コアレイヤからアプリケーションレイヤはインターフェースを利用する
実装例
コアレイヤパターンの現場
レイヤわけに迷う
コアレイヤへの入出力データ
ルールの明確化
まとめ
- コアレイヤとアプリケーションレイヤに分離
- コアレイヤからアプリケーションレイヤはインターフェースを利用してアクセス
- 依存関係逆転の法則
- フレームワーク、ライブラリは素晴らしい