Zend_Controller_Router_Route_Hostname(日本語)
Zend_Controller_Router_Route_Hostname
はホスト名によるルートです。標準のルートと同じように動作しますが、
パスではなくコールされた URL のホスト名に基づいて動作します。
標準のルートの例を使用して、
ホスト名に基づいた動作がどのようなものになるのかを見ていきましょう。
パスを利用してユーザをコールするのではなく、たとえば
http://martel.users.example.com
でユーザ "martel" の情報を見られるようにしたいものとします。
'profile',
'action' => 'userinfo'
)
);
$plainPathRoute = new Zend_Controller_Router_Route_Static('');
$router->addRoute('user', $hostnameRoute->chain($plainPathRoute));
]]>
Zend_Controller_Router_Route_Hostname
のコンストラクタの最初のパラメータはルートの定義で、
これがホスト名にマッチします。
ルート定義には静的な部分と動的な部分があり、両者はドット
('.') で区切られています。動的な部分 (変数)
は、変数名の先頭にコロンをつけて :username
のように表します。静的な部分は、user
のように単純なテキストで表します。
hostname ルートを単独で使うこともできますが、決してしてはいけません。
その理由は、hostname ルートはそれ単体だと任意のパスにマッチすることになるからです。
hostname ルートの後には path ルートをつなげなければなりません。
例に示したように、$hostnameRoute->chain($pathRoute);
のようにコールすることになります。こうすると、
$hostnameRoute には何も変更は加えられませんが、新たなルート
(Zend_Controller_Router_Route_Chain) が返されます。
そして、これをルータに渡します。