German | English | Spanish | French | Hebrew | Hungarian | Indonesian | Italian | Japanese | Dutch | Norwegian | Polish | Portuguese | Portuguese (Brazilian) | Russian | Swedish | Ukrainian | Vietnamese | Simplified Chinese | Traditional Chinese
モデル-ビュー-コントローラ (MVC)
Yii はウェブプログラミングで幅広く採用されている、モデル-ビュー-コントローラ (MVC) デザインパターンを実装しています。 MVC はユーザインタフェースの考慮からビジネスロジックを分離することを目的としています。 そうすることによって、開発者は、他方に影響を与えることなく、一方を容易に変更することが出来ます。 MVC においては、モデル (M) は情報 (データ) とビジネスルールを表現し、ビュー (V) はフォームやテキストのようなユーザインタフェースを含み、コントローラ (C) はモデルとビューの通信を管理します。
MVC を実装する他に、Yii は アプリケーション
と呼ばれるフロントコントローラも導入しています。
これは、リクエスト処理のための実行コンテキストをカプセル化したものです。
アプリケーションは、ユーザリクエストに関するいくつかの情報を収集して、
さらに処理を進めるために適切なコントローラにリクエストを渡します。
以下の図は Yii アプリケーションの静的な構造を示します。
Yii アプリケーションの静的な構造

典型的なワークフロー
以下の図は Yii アプリケーションがユーザリクエストを処理する時の典型的なワークフローを示します。
Yii アプリケーションの典型的なワークフロー

- ユーザが URL
http://www.example.com/index.php?r=post/show&id=1
によってリクエストを発行します。 ウェブサーバはブートストラップスクリプトindex.php
を実行してリクエストを処理します。 - ブートストラップスクリプトは アプリケーション インスタンスを生成し、それを実行します。
- アプリケーションは詳細なユーザリクエスト情報を
request
という名前の アプリケーションコンポーネント から得ます。 - アプリケーションは、
urlManager
という名前のアプリケーションコンポーネントの助けによって 要求されている コントローラ と アクション を決定します。 この例においては、コントローラはpost
で、PostController
クラスを示します。 そして、アクションはshow
ですが、その実際の意味はコントローラによって決定されます。 - アプリケーションはユーザリクエストをさらに処理するために要求されたコントローラのインスタンスを生成します。
コントローラはアクション
show
がコントローラクラスのactionShow
メソッドであると決定します。 そして、アクションに関連付けられたフィルタ (例えばアクセス制御やベンチマーク) を生成して、実行します。 アクションはフィルタによって許可された場合に限り実行されます。 - アクションは ID が
1
であるPost
モデル をデータベースから読み出します。 - アクションは
Post
モデルを用いてshow
という名前の ビュー を表示します。 - ビューは
Post
モデルの属性(アトリビュート)を読み出して表示します。 - ビューはいくつかの ウィジェット を実行します。
- ビューが描画した結果は レイアウト に埋め込まれます。
- アクションはビューの描画を完了させ、結果をユーザに表示します。
$Id$