Symfonyを勉強している時に、MVCモデルというのが出てきたので、最近何かとお世話になっているせお丸さんの動画で勉強したいと思います。
※注意※
このサイトでは、勉強用に自分で理解をしやすいようにメモをとっていますが、間違っているところがあるかもしれません。そのため、きちんと学ぶ方は私のブログ記事からではなく、せお丸さんの動画をぜひ覗いてみてください。
MVCモデルとは
プログラムの役割を「Model」、「View」、「Controller」の3つに分ける考え方。
Model
データベース関連の処理を担当
View
画面表示(HTML)を担当
Controller
リクエスト受付とレスポンス返却
MVCモデルを使った処理の流れー動画の図解を見ると分かりやすい
URL⇨(リクエスト)⇨router⇨Controller⇨Model⇨DB(データベース)
⇨Controller⇨View⇨Controller⇨(レスポンス)⇨クライアント
ECサイトを想定。
例えば、「http://xxx/item/1」というURLで商品ページをみようとする。
「http://xxx/item/1」をリクエストすると、routerというところが呼び出される。
routrerは、Controllerを呼び出す役割のプログラム。
itemの情報がリクエストされたので、itemControllerというクラスが呼び出される。
itemの情報を検索したいのか、itemの詳細ページを見たいのかによって、Controllerが取るべきアクションが変わってくる。
Controllerには、検索だったらsearchアクション、商品ページを見たいならshowアクションといったように、
あらかじめいくつかのアクションプランが用意されている。
言い換えると、itemControllerクラスの中にはsearchメソッドとshowメソッドが用意されている。
今回はidが1のitemの詳細ページが見たいので、routerがitemControllerクラスのshowメソッドを呼び出す。
呼び出された側のControllerは、「idが1番のitem情報をください」とModelに依頼。
Modelはid1番のitem情報をデータベースから取得してきて、それをControllerに返す。
次にControllerは、この商品情報をViewに渡す。
Viewは渡された商品データをもとに、この商品情報を表示するHTMLを作ってControllerに返却する。
最終的にControllerは、そのHTMLをレスポンスとしてユーザーに返却する。
このようにControllerというのは、リクエストを受け付けて
それをModelやViewに対して様々な依頼を行って
最終的にレスポンスをユーザーに返すという役割になる。
Modelの役割は、データベースに対して様々な問い合わせを行う。
Viewの役割は、HTMLを作る。
注意点。
MVCは、これらの役割を表した言葉なので、全ての処理がこの3つのうちどれかに該当するわけではない。
実際、今回の例ではrouterという役割も登場した。