モデル-ビュー-コントローラ (MVC)

Yiiはウェブプログラミングで幅広く採用されている、モデル-ビュー-コントローラ (MVC) デザインパターンを実装しています。 MVCはユーザインタフェースの考慮からビジネスロジックを分離することを目的としています。 そうすることによって、開発者は、他方に影響を与えることなく、一方を容易に変更することが出来ます。 MVCにおいては、モデル(M)は情報(データ)とビジネスルールを表現し、ビュー(V)はフォームやテキストのようなユーザインタフェースを含み、コントローラ(C)はモデルとビューの通信を管理します。

MVCを実装する他に、Yiiはアプリケーションと呼ばれるフロントコントローラも導入しています。 これは、リクエスト処理のための実行コンテキストをカプセル化したものです。 アプリケーションは、ユーザリクエストに関するいくつかの情報を収集して、 さらに処理を進めるために適切なコントローラにリクエストを渡します。

以下の図はYiiアプリケーションの静的な構造を示します。

Yiiアプリケーションの静的な構造

Yiiアプリケーションの静的な構造

1. 典型的なワークフロー

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

Yiiアプリケーションの典型的なワークフロー

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

Be the first person to leave a comment

Please to leave your comment.