Zend_Controller ぷちまとめ

| | コメント(8) | トラックバック(0)

Zend Framework 1.0.3 の Zend_Controller について少しまとめました。キレイなソースで読みやすかったぁ。

Zend_Controller まとめ

Zend Framework 1.0.3 の Zend_Controller について、各オブジェクトの役割と振る舞いのまとめです。ソースコードとドキュメンテーションを読みながら書いているのでトンチンカンな箇所もあるかもです。

構成部品

Zend_Controller を構成する部品のうち、特に重要な部品を挙げます。

リクエストオブジェクト

概要

アプリケーションへの要求を表します。オブジェクトの役割は次の通りです。

リクエストオブジェクトを処理する委譲先情報の提供。
特定のモジュールに所属する、特定のコントローラの、特定のアクションを指し示す値を提供します。これは要求内容の一部、もしくはメタ情報から供給されます。
要求内容へのアクセス手段。
要求内容へのアクセッサを持ちます。実装によっては、HTTP ヘッダやリクエストメソッドといった、メタ情報も取得できます。
アクションコントローラオブジェクト間の橋渡し。
リクエストオブジェクトは、委譲先で処理できないといった理由で、複数のアクションコントローラオブジェクトを渡り歩く場合があります。古い委譲先から新しい委譲先へちょっとした情報を伝えたい場合、リクエストオブジェクトがその役目を担います。

Zend_Controller_Front の実装では、リクエストオブジェクトが処理の流れを決める中核となっています。関係するフローを抜粋して示します。

  1. フロー開始。
  2. フロントコントローラオブジェクトは、リクエストオブジェクトを作成、もしくは受け取る。
  3. フロントコントローラオブジェクトは、ルータオブジェクトにリクエストオブジェクトを渡す。
  4. ルータオブジェクトは、委譲先情報から委譲先を決定し、リクエストオブジェクトへ実際の委譲先を設定する。
  5. フロントコントローラオブジェクトは、ディスパッチャオブジェクトにリクエストオブジェクトを渡す。
  6. フロントコントローラオブジェクトは、リクエストオブジェクトに処理済の印を付ける。
  7. ディスパッチャオブジェクトは、リクエストオブジェクトに従ってアクションコントローラオブジェクトへ処理を委譲する。
  8. アクションコントローラオブジェクトは、更なる委譲が必要ならばリクエストオブジェクトの処理済の印を解除して、新しい委譲先を設定する。
  9. アクションコントローラオブジェクトは、フロントコントローラオブジェクトへ処理を返却する。
  10. フロントコントローラオブジェクトは、リクエストオブジェクトが処理済になるまで委譲を繰り返す。
  11. フロー終了。

型情報

Zend_Controller_Request_Abstract を実装したクラスのインスタンスです。

実装

基底に必ず Zend_Controller_Request_Abstract を持たなければなりません。

Zend_Controller_Request_Http 
HTTP に対応した実装です。
Zend_Controller_Request_Apache404 
Apache の特定の挙動に対応した Zend_Controller_Request_Http の派生です。

レスポンスオブジェクト

概要

アプリケーションの応答を表します。オブジェクトは応答の結果セットを保持し、場合によって標準出力へ出力するのが役割です。Zend_Controller では、アクションコントローラオブジェクトに渡して結果セットを受け取る目的に使用されます。通常はレスポンスオブジェクト単体で使われる事は少なく、Zend_View などと組み合わせて利用されます。

Zend_Controller_Front での、レスポンスオブジェクトが関連するフローを抜粋して示します。

  1. フロー開始。
  2. フロントコントローラオブジェクトは、レスポンスオブジェクトを作成、もしくは受け取る。
  3. フロントコントローラオブジェクトは、ディスパッチャオブジェクトへ処理を委譲する。
  4. ディスパッチャオブジェクトは、リクエストオブジェクトに処理済の印を付ける。
  5. ディスパッチャオブジェクトは、特定のアクションコントローラオブジェクトへレスポンスオブジェクトを渡して処理を委譲する。
  6. アクションコントローラオブジェクトは、レスポンスオブジェクトへ結果をセットする。
  7. アクションコントローラオブジェクトは、更なる委譲が必要ならばリクエストオブジェクトの処理済の印を解除して、新しい委譲先を設定する。
  8. アクションコントローラオブジェクトは、フロントコントローラオブジェクトへ処理を返却する。
  9. フロントコントローラオブジェクトは、リクエストオブジェクトが処理済になるまで委譲を繰り返す。
  10. フロントコントローラオブジェクトは、レスポンスオブジェクトの結果セットを標準出力へ出力する。
  11. フロー終了。

型情報

Zend_Controller_Response_Abstract を基底としたクラスのインスタンスです。

実装

基底に必ず Zend_Controller_Response_Abstract を持たなければなりません。

Zend_Controller_Response_Http 
HTTP に対応した実装です。
Zend_Controller_Response_Cli 
CLI に対応した実装です。

備考

Zend_Controller_Response_Abstract 自体が HTTP を強く意識した作りとなっています。

フロントコントローラオブジェクト

概要

フロントコントローラパターンのフロントコントローラを担当するオブジェクトです。Zend_Controller のオブジェクトを集約してフロー全体を制御し、アプリケーションのエンドポイントの役割を果たします。また、プラグイン機構によるフローへの拡張ポイントを提供します。

型情報

Zend_Controller_Front クラスのインスタンスです。

実装

デフォルトの実装 Zend_Controller_Front を参考にして自作します。

Zend_Controller_Front 
デフォルトの実装です。

アクションコントローラオブジェクト

概要

要求を実際に処理する部分を表します。リクエストオブジェクトとレスポンスオブジェクトを結果によって結びつける重要な役割を担います。

型情報

Zend_Controller_Action を基底としたクラスのインスタンスです。

実装

基底に必ず Zend_Controller_Action を持たなければなりません。

プラグインオブジェクト

概要

フロントコントローラオブジェクトに用意された拡張ポイントに対する拡張を表します。拡張ポイントは、アクションコントローラオブジェクトに処理が委譲される前後と、フロー開始とフロー終了にそれぞれ用意されています。拡張ポイントでどのような処理を行うかは実装者に任せられています。いくつか用意されている実装では、

型情報

Zend_Controller_Plugin_Abstract を実装したクラスのインスタンスです。

実装

基底に必ず Zend_Controller_Plugin_Abstract を持たなければなりません。

Zend_Controller_Plugin_ErrorHandler 
例外が発生した場合に専用のアクションコントローラへ処理を委譲するプラグインです。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Zend_Controller ぷちまとめ

このブログ記事に対するトラックバックURL: http://zenith.sakura.ne.jp/mt/mt-tb.cgi/13

コメント(8)

As usual this was a thoughtful submit today. You make me want to preserve coming back and forwarding it my followers?-.

I thought that was extremeley exciting. Many thanks for your unusual details. I'll maintain using this.

Hi there might I reference some of the insight here in this blog site if I reference you with a link back again on your site?

I thought that was extremeley exciting. Many thanks for your unusual details. I'll maintain using this.

Hi! Your publish rocks and can be a great study!

Hi there might I reference some of the insight here in this blog site if I reference you with a link back again on your site?

フロントコントローラオブジェクトに用意された拡張ポイントに対する拡張を表します。拡張ポイントは、アクションコントローラオブジェクトに処理が委譲される前後と、フロー開始とフロー終了にそれぞれ用意されています。拡張ポイントでどのような処理を行うかは実装者に任せられています。いくつか用意されている実装では、

Fantastisk service! Jeg havde brug for at få leveret en gave på meget kort tid.Ved hjælp af lidt snilde og en super god service pr.

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、zenithが2008年1月12日 00:08に書いたブログ記事です。

ひとつ前のブログ記事は「東方 Flex ピチューンエフェクト」です。

次のブログ記事は「Zend_Controller と Zend_View 図でまとめ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.12