CakePHPにおけるMVCのあれこれ備忘録

CakePHP
CakePHPを勉強してるわけですが、CakePHPのMVC(モデル-ビュー-コントローラ)における関連性と、それぞれさらに「コンポーネント」や「ヘルパー」やら関連するロジックがどうもごちゃごちゃして頭の中が整理されていない。。

というわけで備忘録。

CakePHPにおけるMVCの概念

処理の流れ

[1.クライアント]

   ↓

(2.ディスパッチャ)
※対象のコントローラを判定

   ↓

[3.コントローラ] → [5.ビュー] → [6.クライアント]

   ↓↑

 [4.モデル]

Model(モデル)
アプリケーションで利用されるデータを表す。

データは、対象がデータベースであれば、そのテーブル。
その他、用意した(された)データがテキスト、RSS、JSONなどなどであれば、それらを対象とする。

class Task extends AppModel {
var $name = ‘Task’;
}

こうすると、”Task”という名前のモデルとしてCakePHPの設定ファイルに指定したデータべースのテーブルにアクセスできる。

モデルには「ビヘイビア(Behavior)」というロジックを割り当てて利用可能。
※ビヘイビアは、モデルクラス変数 $actsAs をとおしてモデルに割り当てられる。

View(ビュー)
コントローラから受け取ったデータを元にコンテンツを整形し、クライアントのブラウザへ結果を返す。

ビューには「ヘルパー(Helper)」というプレゼンテーション用のロジックをもった、多くのビュー・エレメント・レイアウト間で共有できる”コンポーネント”のようなクラスがある。

●コントローラ内でビューで利用するヘルパーを定義:

class BakeriesController extends AppController {
var $helpers = array(‘Form’, ‘Html’, ‘Javascript’, ‘Ajax’ ‘Time’);
}

Controller(コントローラ)
クライアントからの要求(パラメータ、フォームデータ)を受け取って、対象のモデルからデータを取得。

受け取ったデータを変数などに格納したり、レイアウトの条件をビューに渡す。

コントローラには「コンポーネント」というロジックのパッケージを組み込むことができる。
コントローラ内でコンポーネントを追加して、複数のコントローラ間で共有可能。

●予め用意されているコンポーネント例:

  • セキュリティ(Security)
  • セッション(Sessions)
  • 認可(Access control lists)
  • メール(Emails)
  • クッキー(Cookies)
  • 認証(Authentication)
  • リクエスト処理(Request handling)

/* 標準コンポーネントの $this->Session と同様に
$this->Math でアクセスできる新しいコンポーネントを作成する例*/

var $components = array(‘Math’, ‘ession’);

この記事のトラックバックURL

コメントを残す

メールアドレスが公開されることはありません。

*


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>