7.2. Zend_Controller の基本

Zend_Controller は軽量で部品化されており、拡張しやすいように設計されています。 この設計は、柔軟性および利用者に対する自由度を確保するための最低限のものであり、 Zend_Controller を使用して構築したシステムは、 ほぼ同じようなコード配置・規約を共有することができます。

次の図は処理の流れを表したものです。また、詳細についてはそれ以降で説明しています。

Zend_Controller の処理の流れは、 いくつかの部品にわかれて実装されています。 これらの部品のすべてを完璧に理解する必要はありませんが、 処理の概要を知っておくことは有用です。

Zend_Controller の処理の流れは比較的シンプルです。 Zend_Controller_Front がリクエストを受け取り、 Zend_Controller_Router_Rewrite をコールして、 配送先となるコントローラ (そしてコントローラ内のアクション) を決定します。Zend_Controller_Router_Rewrite は URI を分解し、リクエストからコントローラ名とアクション名を取得します。 その後、Zend_Controller_Front はディスパッチループに突入します。 まず Zend_Controller_Dispatcher_Standard をコールしてそこにリクエストを渡し、 リクエストで指定されたコントローラとアクションを取得します (あるいはデフォルトを使用します)。 コントローラが終了すると、処理は Zend_Controller_Front に戻ります。リクエストのディスパッチ状態がリセットされ、 別のコントローラをディスパッチするように指示された場合は、 ループが続けられて次の配送処理が行われます。 それ以外の場合は、処理がそこで終了します。それ以外の場合は、 処理が終了します。