じぶん対策

日々学んだことをアウトプットして備忘録にしています。

MVCモデルとミドルウェアについて

MVCモデルについて

MVCとは

ソフトウェアをModel,View,Controllerの3要素の組み合わせでシステムを構築していく考え方。

Model

  • ビジネスロジックを担当するシステムの本体部分
  • データの変更をViewに通知する(Observerパターンを使うこともある)

    View

  • 表示、入出力といった部分を担当する。
  • Modelのデータを取り出してユーザが見る形で表示(Viewがデータを受け取っているわけではない)

Controller

  • ViewとModelを制御する(HTTPリクエストを適切なModelに渡す、ViewからのレスポンスHTTPをユーザに返す)
  • 自分自身ではロジックの実行はせず、Viewから入力を受け取り、それに応じてModelのロジックを呼び出し、結果をViewに渡す。
  • UIからの入力を担当する
  • イベントを受け取る。つまり画面上構成するイベントの数だけ処理がある

メリット

  • 機能ごとの分離が明確になるため、独立性が確保でき、分業しやすくなる。
  • コンポーネント間の依存度を下げることができる。つまり、再利用しやすくなる。
  • また、責任が分かれているため、複数人でメンテナンスすることを考えた時、同時に同じ領域を操作する危険が減り保守性も向上する。

Middlewareパターン

❄️PHPでMiddlewareパターンを実装する方法

特性

  • クライアントコードとハンドラの間に割って入り、入力を加工する
  • ハンドラとクライアントコードの間に割って入り、出力を加工する
  • クライアントコードとハンドラの間に割って入り、入力がハンドラに届く前に、早期に出力を返す

Middlewareパターンとは

Middlewareパターンの目的は、「ミドルウェア」と呼ばれるガワの処理で核となるハンドラを包むことで、プログラム本来の振る舞いを拡張可能にすること。
MVCウェブフレームワークでは、コントローラの入出力となるHTTPリクエストやレスポンスをアプリケーション全体で統一的に加工する用途などに採用されている。

どんな時に使えるか

  • HTTPS接続のみを許可し、HTTPで接続されると強制的にリダイレクトする。
  • 特定のIPアドレスだけ許可する
  • ログインしているユーザーにのみページを表示する
  • 特定の言語のみ、特定の国のみページを表示する
  • リクエストのログを記録する

LaravelにおけるMiddleware

Laravel Middleware 調べてみた
以下の三種類に分類できる。 - グローバルミドルウェア - ルートミドルウェア - コンストラクタ内のミドルウェア

処理の順番は以下の通り。
1. グローバルミドルウェア 2. ルートミドルウェア 3. コンストラクタ内ミドルウェア 4. コントローラーの処理 5. コンストラクタ内ミドルウェア 6. ルートミドルウェア 7. グローバルミドルウェア

コントローラーの処理をラップするイメージ。

公式

Laravel - ミドルウェア

追加(後で読む)

クリーンアーキテクチャ

クリーンアーキテクチャ完全に理解した