web学習日記

プログラミングやweb関係を学んだことを呟くブログ

CakePHPのMVCとは何か?

f:id:nana205:20190614011943j:plain

CakePHPに限らず多くのフレームワークMVCモデルを採用しています。
ただなぜMVCを採用しているのでしょうか? MVCの利点と問題点,CakePHPMVCの特徴と整理しておきます。

そもそもMVCとは?

アプリケーションアーキテクチャの一つで
Model/View/COntrollerの3つのプログラム構造のことを言います。

f:id:nana205:20190711005552p:plain

それぞれの役割

M:Model

  • システムの中でビジネスロジックの実行 DBへアクセスするためのもの

  • アプリケーションが扱うデーターの操作

  • 業務屋

V:View

  • ユーザーからの画面入力

  • ユーザーへの結果を出力

  • Modelのデータの状態を参照して画面に表示

  • レンダリング

C:Controller

  • 入力情報を受け取る

  • 処理を行うModelと結果を返すViewを選定

  • 司令塔の役割

利点

1.機能が分割されているため、分業して作業がしやすい。
2.それぞれが独立しているので変更・修正があった場合影響が受けにくい

問題点

1.業務で扱うデータ要件が複雑になればなるほど、Modelが肥大化する
2.入力に応じた出力要件が複雑になればなるほど、ControllerとViewの依存が高まる

CakePHPMVCの特徴

CakePHPMVCの特徴として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に表示させる 個別で適用させることも可能