質問: laravelのコントローラとはMVCのCその物と聞いたのですがいまいちピンときません。 調べたところ下記のようにあったのですが、ブラウザからのアクションとは具体的にどんな事でしょうか? コントローラーはブラウザからのアクションに応じて実行されるファイルです。 ルーティングというのも同じようなことが書いてあるのですがいまいちわかりません? >>> 「このアドレスにアクセスしたら、どのプログラムを実行し、どのファイルを表示するか」も、すべてフレームワークから管理できるようになっているのです。それを行うのがルーティングです。 どう違うのでしょうか? すべてのフレームワークはmvcがしっかりわかってないと何が書いてあるかもわからないものなのでしょうか?
回答: 例え話をしようと思います。 ブラウザくんは**「リクエスト」**くんにhttp://example.com/sampleという地図を持たせてお使いを頼みました。これを**「アクション」**と呼びます。 リクエストくんはhttp://example.com/sampleという場所へ行きます。このhttp://example.com/sampleは**「URL」**や**「アドレス」**と呼ばれます。 さてリクエストくんは地図を辿り、http://example.comというお店へたどり着きました。ここで待ち構えているのがApacheさんやTomcatさんに代表される**「HTTPサーバ」**です。今回のお店ではApacheさんが窓口をやっています。 Apacheさんはリクエストくんがやってきたので、彼のお使いに応えられる人のところへ案内します。ここで登場するのがLaravelさんなどの**「フレームワーク」**です。 Laravelさんのところへやってきたリクエストくんは/sampleが欲しい、と伝えます。Laravelさんは「/sampleが欲しいのかい。じゃあSampleControllerさんにお願いしよう」と業務の割り振りをします。これが**「ルーティング」**です。 SampleControllerさんは**「コントローラ」**と呼ばれる仕事をしています。リクエストくんがお使いに来たので、**「レスポンス」**を持って帰らせなければなりません。SampleControllerさんはまず**「モデル」**を駆使して**「データベース」**から必要なものを取り出しました。さらにそれを**「ビュー」**担当のbladeさんに渡します。 bladeさんはSampleControllerさんから受け取ったものを、指示された**「テンプレート」**を元に、指定されたところに詰め込んでいきます。こうして出来上がった「レスポンス」は、SampleControllerさんからリクエストくんに渡されます。 リクエストくんは無事ブラウザくんのところに帰ってきて、ブラウザくんはレスポンスを受け取ることができました。 一般的なWebフレームワークは大抵MVCのスタイルを取っています。なぜかというと「そのスタイルにそっていればほとんどのことがうまくいく」からです。MVCのことを知っていれば、フレームワークの理解が進むことは間違いないです。コードの全部を読んでいけば、MVCの概念を知らなくても理解はできますが、例えばLaravelで「見た目だけ直したい」と思ったときにindex.phpからコードを追っていくのは馬鹿らしいこと極まりないです。MVCを知っていれば「ビュー」を直せばよい、とすぐ分かるのでviewsフォルダの中だけを探せばよい、ということに繋がります。