目的
laravelで掲示板を作成する際のMVCという概念についての理解を深める
MVCとは
MVC(Model View Controller モデル・ビュー・コントローラ)は、ユーザーインタフェースをもつアプリケーションソフトウェアを実装するためのデザインパターンである。
アプリケーションソフトウェアの内部データを、ユーザーが直接参照・編集する情報から分離する。そのためにアプリケーションソフトウェアを以下の3つの部分に分割する。
参照:https://ja.wikipedia.org/wiki/Model_View_Controller
MVC相関図
Model
Model(モデル)は、一般的にビジネスロジックと呼ばれる部分。アプリケーションデータやビジネスルール、関数、データベースへのアクセス、データ管理などを担当。ビジネスロジックそのものを担当するため、UIの変更などの影響を受けにくいという利点がある。
swiftで例えるとサーバ通信をするクラス。データを扱う。
今回はPost.php, Comments.phpがModelにあたり、モデルと関連しているテーブル, 使用するコネクション名実装した
View
View(ビュー)は、レイアウト部分。UIを表示するコンポーネントであり、データ入力フォームやグラフ、図などデザインやレイアウトに関わるアプリケーションのフロントエンドを担当。
swiftで例えるとxib。テンプレート。
laravelでいう◯◯.blade.php
今回はindex.blade.php, post.blade.php, comment.blade.phpがViewにあたり、各ページに表示する内容をviewで実装した
Controller
Controller(コントロール)は、ModelとViewの仲介役。Viewから受けたデータをModelに渡して、Modelでの処理結果をViewに戻す役割。
swiftで例えるとVCL。制御。
laravelでいう◯◯Controller.php
今回はPostsController.php, CommentsController.phpがControllerにあたり、index( ), store( )メソッドをcontrollerで実装した
MVCモデルのメリット
MVCモデルを採用する事で機能ごとの分離が明確になり、独立性が確保される。分業して開発が行いやすく、自分の得意分野に集中して実装することが可能。デザイナーがViewを担当している間に、プログラマーがModelを修正するなどと分業することが可能。また、コンポーネント間の依存性が抑えられることにより、ほかの部分を変更しても、その影響を受けにくいメリットがある。