1.3 Model-View-Controller(モデル-ビュー-コントローラ)を理解する

CakePHP は、MVC ソフトウェアデザインパターンにしたがっています。MVC でプログラムすると、アプリケーションは大きく分けて三つに分かれます:

  1. モデルは、アプリケーションのデータを表します。
  2. ビューは、モデルデータの表示方法を扱います。
  3. コントローラは、ユーザによるリクエストを受け取って振り分けます。
Figure 1

図1: 基本的な MVC リクエスト

図1は、CakePHP の基本的な MVC のリクエスト例です。説明のために、例えば、リカルドさんが、広告から入ってきたページの“特注ケーキを今すぐ購入!”というリンクをクリックしたとしましょう。

  • リカルドさんのクリックしたリンクは http://www.example.com/cakes/buy につながっていて、ブラウザは web サーバにリクエストを送信します。
  • ディスパッチャ(dispatcher)は、リクエストされた URL (/cakes/buy) をチェックし、リクエストを正しいコントローラに手渡します。
  • コントローラは、アプリケーション独自のロジックを実行します。例えば、リカルドさんがログインしているかどうかをチェックするなどです。
  • また、コントローラはモデルを使用して、アプリケーションのデータにアクセスします。たいていの場合、モデルはデータベースのテーブルを表していますが、LDAP エントリ、RSS フィード、システムのファイルにすることも可能です。この例では、コントローラは、モデルを使ってリカルドさんの最新の購入履歴をデータベースから取得します。
  • コントローラがひとたびデータをマジックのように取り出すと、コントローラはそれをビューに送ります。ビューはこのデータを受け取り、ユーザにどのように見せるかを準備します。CakePHP のビューは、たいていの場合は HTML フォーマットになりますが、必要に応じて、ビューは簡単に、PDF、XML フォーマット、JSON オブジェクトなどにすることも可能です。
  • ビューがコントローラからのデータを使用し、完全にビューを出力すると、そのビューの内容はリカルドさんのブラウザに返信されます。

アプリケーションに対する、ほぼすべてのリクエストがこの基本的なパターンに従います。後で幾つかの CakePHP 特有の点について説明しますので、それまでこの点を忘れないようにしてください。