ホームページ  >  記事  >  バックエンド開発  >  Zend_Controller の仕組み_PHP チュートリアル

Zend_Controller の仕組み_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:33:36716ブラウズ

Zend_Controller は、MVC パターンを使用してサイトを構築するための基礎です。 Zend_Controller システムは、軽量でモジュール式の拡張可能なシステムです。必要なコア部分のみを提供するため、開発者は非常に自由度が高く、柔軟に独自のサイトを構築できます。 Zend_Controller を使用するサイトのコード構造は部分的に似ています。

Zend_Controller のワークフローは、いくつかのコンポーネントを通じて実装されます。これらのコンポーネントの意味を完全に理解する必要はありませんが、ワークフローを少し理解しておくと役に立ちます:

  • Zend_Controller_Front フロントエンド コントローラー
  • Zend_Controller_Front (フロントエンド コントローラー) は Zend_Controller_Controller システムのオーガナイザーであり、FrontController デザイン パターンの実装です。 Zend_Controller_Front は、サーバーによって受け入れられたすべてのリクエストを処理し、最終的にリクエストを ActionController (Zend_Controller_Action) に割り当てる責任を負います。 Zend_Controller_Controller は、顧客の元のリクエストを対応する処理コンポーネント (アクション) に転送して、特定のビジネス処理を完了します。

  • Zend_Controller_Router
  • Zend_Controller_Router はルーターに相当します。ルーティングは、URI を分解し、それを処理するためにどのコントローラーとどのアクションを使用するかを決定するプロセスです。コントローラー、アクション、およびオプションのパラメーターの定義は、オブジェクト Zend_Controller_Dispather_Token にカプセル化され、Zend_Controller_Dispatcher によって処理されます。ルーティングは 1 回だけ行われます。つまり、リクエストが最初のコントローラーにディスパッチされる前に、サーバーが受信したときです。 Zend_Controller_Router は、顧客のリクエスト URI を解析し、パラメーターを分析して、どの ActionController をターゲットにするかを決定します。 Zend_Controller_Router は、分析されたパラメータを Zend_Controller_Dispather_Token オブジェクトにカプセル化します。

    いわゆるルーターは、私たちがよく知っているネットワークルーターの機能に非常に似ており、ネットワークアドレスを決定し、パスを選択する機能があります。ここではリダイレクトに使用されます。

  • Zend_Controller_Dispatcher ディスパッチャー
  • 「割り当て」のプロセスは、Zend_Controller_Dispatcher_Token に基づいて適切なコントローラー ファイルを見つけ、その中でコントローラー クラスをインスタンス化し (Zend_Controller_Action を実装する必要があります)、最後にコントローラーでアクションを実行します。ルーティングとは異なり、割り当てプロセスは、すべてのアクションが順番に割り当てられるまで、Zend_Controller_Front によって継続的に呼び出されます。 Zend_Controller_Dispatcher は、Zend_Controller_Router によるリクエスト URI (Zend_Controller_Dispather_Token オブジェクト) の解析結果に基づいて、リクエストを対応する Zend_Controller_Action に転送します。

  • Zend_Controller_Action
  • Zend_Controller_Action は最も基本的なコントローラーです。それぞれの特定のコントローラーは Zend_Controller_Action クラスから継承し、Zend_Controller_Action のサブクラスであり、独自のアクション メソッドを持ちます。 Zend_Controller_Action は基本的なコントローラーであり、ユーザー リクエストの特定の処理を実際に実行します。

Zend_Controller のワークフローは非常にシンプルです。 Zend_Controller_Front がリクエストを受信すると、Zend_Controller_Router がどのコントローラー (Zend_Controller_Action を実装するクラス) に割り当てるかを決定します。 Zend_Controller_Router は、URI を分解して Zend_Controller_Dispatcher_Token オブジェクトにカプセル化します。次に、Zend_Controller_Front は配布ループに入り、Zend_Controller_Dispatcher を呼び出し、トークン オブジェクトをディスパッチャーに渡して、処理する特定のコントローラーとアクションに割り当てます。コントローラーが終了すると、制御は Zend_Controller_Front に移ります。コントローラーが別のコントローラーを割り当てる必要があると判断した場合 (新しいトークン オブジェクトを返す)、別の割り当てが完了するまでループが継続します。

Zend_Controller ワークフロー図は次のとおりです:

Zend_Controller の仕組み_PHP チュートリアル

ルートプロセス ルーティングプロセス

最初のコントローラーを構築する前に、Zend_Controller_Router のリダイレクト プロセスがどのように機能するかを理解する必要があります。ワークフローは 2 つのステップに分かれていることに注意してください。1 つはルーティングであり、1 回だけ実行されます。もう 1 つはディスパッチであり、周期的なプロセスです。

Zend_Controller_Front は、Zend_Controller_Router を呼び出して、URI をコントローラー (Zend_Controller_Action クラス) とその中のアクションにマップします。 Zend_Controller_Router は URI を分解し、オブジェクト Zend_Controller_Dispatcher_Token を生成し、それをディストリビューター (Zend_Controller_Dispatcher) に渡します。

ルーターは非常に単純なメソッドを使用して、使用するコントローラーとそのアクションを決定します (URI は Zend_Controller_Action にマップされます)。

http://www.bkjia.com/controller/action/

上のコントローラーは使用したいコントローラーであり、アクションは使用したいアクションです。

その他のオプションの GET パラメーターを URI で定義し、コントローラーに渡すことができます。形式はキー/値です: http://framework.zend.com/controller/action/key1/value1/

/controller/ が指定されていない場合、デフォルトでインデックスが呼び出されます。 /action/ が記述されていない場合は、デフォルトでindexが呼び出されます。例:

リーリー

コントローラー、アクション名、およびその他のパラメーターは、トークン オブジェクト - Zend_Controller_Dispatcher_Token にカプセル化されます。このオブジェクトは Zend_Controller_Front に戻され、割り当てプロセスに入り、Zend_Controller_Dispatcher に渡されます。

トークンオブジェクト

Token オブジェクトは非常に単純なオブジェクトで、Zend_Controller_Front とルーターおよびディスパッチャー インターフェイスを実装するクラスの間で渡されます。コントローラー、アクション、その他の GET パラメーターをカプセル化します。

  • コントローラーの名前は、getControllerName() と setControllerName() を通じて取得および設定されます
  • アクションの名前は、getActionName() および setActionName() を通じて取得および設定されます。
  • アクションに渡されるパラメータは配列 (キー/値形式) であり、getParams() を通じて取得でき、setParams() を通じて設定できます。

発送プロセス配布プロセス

いわゆる割り当てプロセスは、トークン オブジェクト (Zend_Controller_Dispatcher_Token) から情報 (コントローラーの名前、アクションの名前、パラメーターなど) を抽出し、コントローラーをインスタンス化し、その中のアクションを呼び出して処理します。 。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/752452.html技術記事 Zend_Controller は、MVC パターンを使用してサイトを構築するための基盤です。 Zend_Controller システムは、軽量でモジュール式の拡張可能なシステムです。必要なコア部分のみを提供します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。