nigoblog

技術系会社のCEOブログ~私的編~

MVCについて

前回ちらっと紹介したMVCについて説明していきます。

MVCとは

  • Model
  • View
  • Controller

のそれぞれの頭文字でアプリケーションの役割を分担することでよりわかりやすくコーディングするためのアプリケーションのこと。
とはいってもこれではよくわからないのでそれぞれ詳しく説明していきます。

Model

主にデーターベースについて。データーベースのテーブル一つにつき一つのモデルがあります。
具体的にはusersテーブルがあったらUser.phpのようなモデルファイルとなります。(とりあえずcakeっぽく説明、テーブルに対し、モデルは単数形)
User.phpに書くことは主に次のこと

  • アソシエーション
  • バリデーション

他にもあるかもしれないですが、今のところ自分が使ってるのはこれくらいです。
アソシエーションはモデル間の関係を表すもの。バリデーションはテーブルのカラムに入れるデータのルールを記載するところ。
アソシエーションには以下のような関係があります。

  • hasOne
  • hasMany belongsTo
  • hasAndBelongsToMany(HABTM)

hasOneは1対1, hasMany belongsToは1対N, HABTMはN対Nの関係を表します。
バリデーションはUserであれば名前は必須情報などのようなルールのこと。

View

主に見た目に関するもの。Controllerから受け取ったデータを出力するなど。
正直あまり説明するようなことはないのですが、処理をControllerに任せる分、エンジニアでないデザイナーの方でも編集できるような形になっています。
cakeではヘルパーが用意されており、フォームやリンクの記述がHtmlで書くのとは少し違います。
フォルダ構成としては
View/
Users/
index.ctp
add.ctp
Posts/
などのようにモデルに対応する形でフォルダ分けされております。さらにファイルは後に説明しますが、コントローラの各メソッドに対応しています。拡張子はhtmlではなくctp(たぶん、Cake TemPlete)をを用います。

Controller

主に処理に関するもの。cakeでアプリケーションを作る際には主にここのコーディングとなります。
命名規則はusersのコントローラであればUsersControllerのように複数系を用います。
ファイルはUsersController.phpのようになり、そこにクラスUsersControllerを作成します。
そのクラス内にメソッドを書く形で処理を書きます。
UsersControllerであれば

  • add() 新規登録
  • mypage() ユーザー情報を読み込む
  • logout() ログアウト

などが考えられます。
そこでそれぞれに対応するような処理を書いていきます。
先程も説明しましたが、基本的には各メソッド一つにつき、一つのViewがありますが、ログアウトなんかはViewがなくても実装できます。


以上簡単でしたがMVCモデルの説明です。
どうやらシンタックスハイライトが使えないみたいなのでコードは載せませんが、いつか対応した時に載せたいと思います。