CakePHPのMVCとは何か?
CakePHPに限らず多くのフレームワークはMVCモデルを採用しています。
ただなぜMVCを採用しているのでしょうか?
MVCの利点と問題点,CakePHPのMVCの特徴と整理しておきます。
そもそもMVCとは?
アプリケーションアーキテクチャの一つで
Model/View/COntrollerの3つのプログラム構造のことを言います。
それぞれの役割
M:Model
システムの中でビジネスロジックの実行 DBへアクセスするためのもの
アプリケーションが扱うデーターの操作
業務屋
V:View
ユーザーからの画面入力
ユーザーへの結果を出力
Modelのデータの状態を参照して画面に表示
C:Controller
入力情報を受け取る
処理を行うModelと結果を返すViewを選定
司令塔の役割
利点
1.機能が分割されているため、分業して作業がしやすい。
2.それぞれが独立しているので変更・修正があった場合影響が受けにくい
問題点
1.業務で扱うデータ要件が複雑になればなるほど、Modelが肥大化する
2.入力に応じた出力要件が複雑になればなるほど、ControllerとViewの依存が高まる
CakePHPMVCの特徴
CakePHPのMVCの特徴としてModelには EntityとTableがあります。
Entity
Table内のソースを動かすために必要なもの。投げれば計算とか、Selectしてきた結果のフラグを日本語に変えたりしてくれます。
個々のレコード行レコードレベルの振る舞いや機能設定の定義 レコードの部分にあたるところ
Table
CRUD処理はもちろん、入力チェックもここで実装できます。
CakePHPは(デフォルトでやろうとすると)1テーブル1ヴァリデーターになります。 もちろん、デフォルトでやろうとしないでヴァリデーターかけることはできます。
Tableを動かすためにはEntityが必要です。 TableのinitializeでどのEntityを使用するか定義します。 initializeではEntity以外に、使用するDB名とテーブル名の定義、主キーの定義をします。
Element
こちらはHTMLファイルをパーツごとに書き出すことがきます。
ここで書き出したパーツはTemplateから呼び出して同じパーツで使いまわすことができます。
Layout
全画面共通で表示させたいことをdefualt.ctpに表示させる 個別で適用させることも可能