今回はアプリケーションのルーター以降のアーキテクチャに関して。主にMVCなどについて説明したいと思います。
MVC(Model,Controller,View)
一般的なアーキテクチャのパターンですね。
ただ実際にはControllerとModelはどのような部分が当てはまるのかというのは解釈が別れる部分のようです。そこでさらに細分化して下記のような実装パターンがあるようです。
トランザクションスクリプトパターン
主に処理を一つのメソッドとして定義し、似た概念を一つのServiceとしてまとめるパターンです。
例として「書籍を購入する」という処理がある場合、BookServiceのようなものを定義し、「注文する」といった処理などが1つ1つのメソッドになります。
1 2 3 4 5 6 7 8 9 |
namespace App\Services class BookService { public function order { //この部分がルーティングで呼ばれた場合、直でくる場所 } } |
このような処理の場合、
- 似たような処理が増えてしまう
- 共通化が難しい
- 責務の分析ができていない
- 分割や結合などが恣意的になる
などのデメリットもあります。
次回はこれをカバーしたドメインモデルについて少し書きます。
参考文献
PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 (日本語)
Laravelアーキテクチャ 3 アプリケーションアーキテクチャ
参考URL