0 follower

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

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

MVCの他に、Yiiはリクエスト処理のコンテキストを実行する、アプリケーションと呼ばれるフロントコントローラを導入しました。 アプリケーションはユーザリクエストを解析し、さらに処理を進めるために適切なコントローラへ処理を渡します。

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

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

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

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

以下の図は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. アクションはPostモデル のID番号1をデータベースから読み出します。
  7. アクションはPostモデルを用いてshowという名前のビューを表示します。
  8. ビューはPostモデルからアトリビュートを読み出し、表示します。
  9. ビューはいくつかのウィジェットを実行します。
  10. ビューが描画した結果はレイアウトに埋め込まれます。
  11. アクションはビューの描画を完了させ、結果をユーザに表示します。