-
Zend_Controller_Front は、
Zend_Controller の処理全体を取りまとめます。
FrontController パターンであるといえます。
サーバから受け取ったすべてのリクエストを Zend_Controller_Front
が処理し、最終的にリクエストを ActionController
(Zend_Controller_Action) に委譲します。
-
Zend_Controller_Request_Abstract
はリクエスト環境を表し、コントローラ名やアクション名
そしてリクエストパラメータを設定したり取得したりする機能を提供します。
さらに、アクションが Zend_Controller_Dispatcher
でディスパッチされたかどうかを追跡する機能もあります。
この抽象リクエストオブジェクトを拡張し、
リクエスト情報をカプセル化します。それによって、
ルータはリクエストの情報を取得して
コントローラとアクションを決定できるようになります。
デフォルトでは Zend_Controller_Request_Http
が用いられます。これは、HTTP リクエスト環境全体へのアクセス機能を提供します。
-
Zend_Controller_Router_Interface を使用してルータを定義します。
ルーティングとは、リクエストの内容を調べて、
そのリクエストを処理するコントローラとアクションを決定する処理のことです。
このコントローラとアクション、そしてリクエストパラメータがリクエストオブジェクトに設定され、
Zend_Controller_Dispatcher_Standard で処理されます。
ルーティングが発生するのは一度だけ、
つまり最初にリクエストを受け取ってから
最初のコントローラにディスパッチされるまでの間だけです。
デフォルトのルータである Zend_Controller_Router_Rewrite は、
Zend_Controller_Request_Http で指定された URI
を受け取ってそれを分解し、コントローラや
アクション、そして URL に含まれたパスのパラメータを取得します。
たとえば、http://localhost/foo/bar/key/value
のような URL の場合は foo がコントローラ、
bar がアクション、そしてパラメータ
key の値として value を取得します。
Zend_Controller_Router_Rewrite
は、任意のパスにマッチさせることもできます。
詳細は
ルータのドキュメント
を参照ください。
-
Zend_Controller_Dispatcher_Interface
を使用してディスパッチャを定義します。ディスパッチとは、
コントローラとアクションをリクエストオブジェクトから受け取り、
それを実際のコントローラファイル/クラスとメソッドに対応させる処理のことです。
コントローラやアクションが存在しない場合は、
デフォルトのコントローラやアクションにディスパッチします。
実際のディスパッチ処理では、
コントローラクラスのインスタンスの作成と
そのクラスのアクションメソッドのコールを行います。
ルーティングは一度しか発生しませんが、
それとは異なりディスパッチは繰り返し発生します。
リクエストオブジェクトのディスパッチ状態がリセットされるとループが再開され、
現在リクエストオブジェクトに設定されているアクションがコールされます。
リクエストオブジェクトのディスパッチ状態が (TRUE に)
設定された状態でループが終了すると、処理が終了します。
デフォルトのディスパッチャは
Zend_Controller_Dispatcher_Standard です。
これは、MixedCasedClasses 形式の名前の最後に
Controller がついたクラスをコントローラとして使用し、
アクションメソッドの名前は camelCasedMethods
形式 (最後に Action をつける) となります。たとえば
FooController::barAction()
のような場合、コントローラは
foo、アクションは bar
となります。
Note: 大文字小文字の命名規約
人はみな、リンクをタイプする際に大文字小文字の区別をあまり気にしないものです。
Zend Framework では、パス情報をすべて小文字に正規化します。
これはもちろん、
コントローラ名やアクション名を決める際やリンクする場合にも影響を及ぼします。
コントローラクラスやアクションメソッドの名前に
MixedCase あるいは camelCase の単語を複数使用したい場合は、
URL 上での単語の区切り文字として '-' あるいは
'.' のいずれかを使用しなければなりません
(とは言え、ここで使用する文字は変更できます)。
たとえば、アクションを
FooBarController::bazBatAction()
で定義したとすると、対応する URL は
/foo-bar/baz-bat
あるいは /foo.bar/baz.bat となります。
-
Zend_Controller_Action はコントローラの基底コンポーネントです。
各コントローラはこの Zend_Controller_Action
クラスを継承して作成します。このクラスではアクションメソッドを定義します。
-
Zend_Controller_Response_Abstract
は基底レスポンスクラスで、アクションコントローラからの応答内容を収集し、
それをレスポンスとして返します。これはヘッダと本文の両方を収集します。
デフォルトのレスポンスクラスは
Zend_Controller_Response_Http で、
これは HTTP 環境での使用に適しています。