LaravelのMVCの話




MVCは現在でも頻繁に利用されますが、当初はUI設計のための設計パターンとして用いられてきました。現在のWebアプリケーションのサーバサイドで用いられるMVCは、もともとのMVCパターンをサーバサイドに適用したものでMVC2と呼ばれ、モデルからビューに対して変更を通知する、もともとのMVCにあった処理はサーバサイドにはありません。LaravelでのMVCはこのMVC2を指すものです。

MVCとは

MVCとは、『Model』『View』『Controller』の略です。

複雑になりがちなプログラミングの処理を3つの役割・機能に分割して実装するデザインパターンの1つです。

MVCの概念は『機能によってプログラムの中を切り分けて記述する』というものになります。

MVCモデルでアプリケーションを開発することにより、より効率よく開発することが出来ます。

このページでは、『MVC』の掲げる『Model』『View』『Controller』を1つずつ解説していきます。

Modelについて

Modelとは、データベースを操作する処理を想像するシーンも多いですが、本来はビジネス要求やサービス仕様を模範し、具象化したものでビジネスロジックを解決する処理グループのことです。

小さなアプリケーションでは、データベース構造がそのままビジネス要求と結びつくケースも多く、データベースそのものになる場合もありますが、データベースを操作するのがモデルではありません。

ビジネスロジックとは、データベース上のデータに対する処理手順。そのシステムにおける仕事部分のこと。

Viewについて

ビューとは一般的にブラウザに表示されるものを指し、Bladeテンプレートをビューと捉えることも出来ますが、テンプレート自体はフレームワーク内部でIlluminate\Http\Responseインスタンスを介して出力されます。

テンプレートはビューを構成する要素の1つで、コントローラで返却するインスタンスはBladeテンプレートのみではありません。ビューを返却する際に、特定のHTTPステータスやヘッダーを返却する場合はResponseクラスも利用し、コントローラで定義する必要があります。

Controllerについて

laravelの開発はまずコントローラを作るところから始まるとも言われている。

Laravelにおけるリクエストとレスポンスの一連の動作は、Illuminate\Routing\Routerクラスが制御しています。標準で用意されているいくつかのコントローラは、実際にはRouterから指示をもらい(ディスパッチ)実行しているクラスに過ぎず、コントローラを担当するグループの1つであることがわかります。

このコントローラはURLに対応するアクションメソッドを持ちますが、フレームワーク内部では、コントローラクラスを強制しているわけではなく、事前にroutes配下のweb.phpファイルなどでURLと対応するクラスであれば、どんなクラスが実行されてもレスポンスを返却する処理が行われます。

Laravelではリソースコントローラと呼ばれるCRUD、「Create」(生成)、「Read」(読み取り)、「Update」(更新)、「Delete」(削除)に対応するメソッド(アクション)がありますが、あくまでコントローラクラスの雛形とルーターの定義がまとめてできる機能に過ぎません。

Laravelではルーターからディスパッチされる処理をメソッドとして記述し、そのいくつかをまとめたものがコントローラクラスと呼ばれています。

ADR(Action Domain Responder)

ADRは、元来のMVCをもとにサーバサイドへ適応したMVC2と同様、MVCをネットワーク上のリクエスト・レスポンスを扱うサーバサイドアプリケーション向けに、より洗練された設計パターンとして提唱されたものです。

この話はまた今度しましょう。それでは、また・・・。




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


ABOUT US
kee
フルマラソン3:27:43!! ファイナンシャルプランナー&JADPメンタル心理カウンセラー&上級心理カウンセラー! 普段は食品工場で仕事をしています。ランニング大好き、料理大好き、サッカー大好き、キャンプ大好き、お酒大好き、釣り大好き、激辛大好き、読書大好き、書ききれないほどの大好きに囲まれて毎日幸せを実感しています。夢はホノルルマラソンに出ること。 座右の銘『明日死ぬかのように生きよ、永遠に生きるかのように学べ』 このブログは忘れやすい私の備忘録、私の脳の第2領域です。