Zend_Controller-Router-Route-Hostname.xml 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 15103 -->
  4. <sect3 id="zend.controller.router.routes.hostname">
  5. <title>Zend_Controller_Router_Route_Hostname</title>
  6. <para>
  7. <classname>Zend_Controller_Router_Route_Hostname</classname>
  8. はホスト名によるルートです。標準のルートと同じように動作しますが、
  9. パスではなくコールされた URL のホスト名に基づいて動作します。
  10. </para>
  11. <para>
  12. 標準のルートの例を使用して、
  13. ホスト名に基づいた動作がどのようなものになるのかを見ていきましょう。
  14. パスを利用してユーザをコールするのではなく、たとえば
  15. <code>http://martel.users.example.com</code>
  16. でユーザ "martel" の情報を見られるようにしたいものとします。
  17. </para>
  18. <programlisting role="php"><![CDATA[
  19. $hostnameRoute = new Zend_Controller_Router_Route_Hostname(
  20. ':username.users.example.com',
  21. array(
  22. 'controller' => 'profile',
  23. 'action' => 'userinfo'
  24. )
  25. );
  26. $plainPathRoute = new Zend_Controller_Router_Route_Static('');
  27. $router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
  28. ]]>
  29. </programlisting>
  30. <para>
  31. <classname>Zend_Controller_Router_Route_Hostname</classname>
  32. のコンストラクタの最初のパラメータはルートの定義で、
  33. これがホスト名にマッチします。
  34. ルート定義には静的な部分と動的な部分があり、両者はドット
  35. ('.') で区切られています。動的な部分 (変数)
  36. は、変数名の先頭にコロンをつけて <code>:username</code>
  37. のように表します。静的な部分は、<code>user</code>
  38. のように単純なテキストで表します。
  39. </para>
  40. <para>
  41. hostname ルートを単独で使うこともできますが、決してしてはいけません。
  42. その理由は、hostname ルートはそれ単体だと任意のパスにマッチすることになるからです。
  43. hostname ルートの後には path ルートをつなげなければなりません。
  44. 例に示したように、<code>$hostnameRoute->chain($pathRoute);</code>
  45. のようにコールすることになります。こうすると、
  46. <code>$hostnameRoute</code> には何も変更は加えられませんが、新たなルート
  47. (<classname>Zend_Controller_Router_Route_Chain</classname>) が返されます。
  48. そして、これをルータに渡します。
  49. </para>
  50. </sect3>
  51. <!--
  52. vim:se ts=4 sw=4 et:
  53. -->