Zend_Uri.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 20799 -->
  4. <sect1 id="zend.uri.chapter">
  5. <title>Zend_Uri</title>
  6. <sect2 id="zend.uri.overview">
  7. <title>概要</title>
  8. <para>
  9. <classname>Zend_Uri</classname> は、 <ulink
  10. url="http://www.w3.org/Addressing/">Uniform Resource Identifiers</ulink>
  11. (<acronym>URI</acronym>s) の操作および検証を行うためのコンポーネントです。
  12. <classname>Zend_Uri</classname> の本来の目的は
  13. <classname>Zend_Http_Client</classname> のような他のコンポーネントを支援することですが、
  14. 単体で使用しても便利です。
  15. </para>
  16. <para>
  17. <acronym>URI</acronym> の最初は常にスキームから始まり、その後にコロンが続きます。
  18. スキームにはさまざまなものがあります。
  19. <classname>Zend_Uri</classname> クラスは、
  20. 各スキームに特化した自身のサブクラスを返すファクトリメソッドを提供しています。
  21. サブクラスの名前は <classname>Zend_Uri_&lt;scheme&gt;</classname>
  22. となり、<code>&lt;scheme&gt;</code> の部分には
  23. スキーム名の最初の文字だけを大文字にしたものがあてはまります。
  24. この規則にはひとつ例外があり、<acronym>HTTPS</acronym> スキームについては
  25. <classname>Zend_Uri_Http</classname> で扱われます。
  26. </para>
  27. </sect2>
  28. <sect2 id="zend.uri.creation">
  29. <title>新しい URI の作成</title>
  30. <para>
  31. スキームのみを <methodname>Zend_Uri::factory()</methodname> に渡すと、
  32. <classname>Zend_Uri</classname> は新しい <acronym>URI</acronym> をゼロから作成します。
  33. </para>
  34. <example id="zend.uri.creation.example-1">
  35. <title>Zend_Uri::factory() による新しい URI の作成</title>
  36. <programlisting language="php"><![CDATA[
  37. // 何もないところから新しい URI を作成するには、スキームのみを渡します
  38. $uri = Zend_Uri::factory('http');
  39. // $uri は Zend_Uri_Http のインスタンスとなります
  40. ]]></programlisting>
  41. </example>
  42. <para>
  43. 新しい <acronym>URI</acronym> を作成するには、スキームのみを
  44. <methodname>Zend_Uri::factory()</methodname> に渡します
  45. <footnote><para>現時点では、
  46. <classname>Zend_Uri</classname> がサポートしているスキームは <acronym>HTTP</acronym> および <acronym>HTTPS</acronym> だけです。</para></footnote>。
  47. サポートしていないスキームが渡された場合は、
  48. <classname>Zend_Uri_Exception</classname> がスローされます。
  49. </para>
  50. <para>
  51. 渡されたスキームあるいは <acronym>URI</acronym> をサポートしている場合は、
  52. <methodname>Zend_Uri::factory()</methodname> は自分自身のサブクラスを返します。
  53. これは、指定したスキームに特化したものとなります。
  54. </para>
  55. </sect2>
  56. <sect2 id="zend.uri.manipulation">
  57. <title>既存の URI の操作</title>
  58. <para>
  59. 既存の <acronym>URI</acronym> を操作するには、完全な <acronym>URI</acronym> を
  60. <methodname>Zend_Uri::factory()</methodname> に渡します。
  61. </para>
  62. <example id="zend.uri.manipulation.example-1">
  63. <title>Zend_Uri::factory() による既存の URI の操作</title>
  64. <programlisting language="php"><![CDATA[
  65. // 既存の URI を操作するには、それを渡します
  66. $uri = Zend_Uri::factory('http://www.zend.com');
  67. // $uri は Zend_Uri_Http のインスタンスです
  68. ]]></programlisting>
  69. </example>
  70. <para>
  71. このとき、<acronym>URI</acronym> のパースと検証が行われます。
  72. もし妥当な形式でなかった場合は、そこで
  73. <classname>Zend_Uri_Exception</classname> がスローされます。それ以外の場合は
  74. <methodname>Zend_Uri::factory()</methodname> は自分自身のサブクラスを返します。
  75. これは、操作するスキームに特化したものとなります。
  76. </para>
  77. </sect2>
  78. <sect2 id="zend.uri.validation">
  79. <title>URI の検証</title>
  80. <para>
  81. <methodname>Zend_Uri::check()</methodname> 関数を使用すると、
  82. 既存の <acronym>URI</acronym> の検証のみを行うことができます。
  83. </para>
  84. <example id="zend.uri.validation.example-1">
  85. <title>Zend_Uri::check() による URI の検証</title>
  86. <programlisting language="php"><![CDATA[
  87. // 指定した URI が正しい形式かどうかを調べます
  88. $valid = Zend_Uri::check('http://uri.in.question');
  89. // $valid は、正しければ TRUE、そうでなければ FALSE となります
  90. ]]></programlisting>
  91. </example>
  92. <para>
  93. <methodname>Zend_Uri::check()</methodname> は boolean 値を返します。
  94. これは <methodname>Zend_Uri::factory()</methodname>
  95. を使用して例外を処理するよりも便利です。
  96. </para>
  97. <sect3 id="zend.uri.validation.allowunwise">
  98. <title>URL 内での "Unwise" 文字の許可</title>
  99. <para>
  100. デフォルトでは、<classname>Zend_Uri</classname> は次の文字を許可しません。
  101. <code>"{", "}", "|", "\", "^", "`"</code>
  102. これらは <acronym>RFC</acronym> で "unwise" と定義されており無効なものです。
  103. しかし、多くの実装ではこれらの文字を妥当なものとして扱います。
  104. </para>
  105. <para>
  106. <classname>Zend_Uri</classname> でもこれらの "unwise" 文字を許可することができます。
  107. そのためには、<methodname>Zend_Uri::setConfig()</methodname> メソッドで
  108. 'allow_unwise' オプションを <constant>TRUE</constant> に設定します。
  109. </para>
  110. <example id="zend.uri.validation.allowunwise.example-1">
  111. <title>URI における特殊文字の許可</title>
  112. <programlisting language="php"><![CDATA[
  113. // '|' 記号を含んでいます
  114. // 通常は、これは false を返します
  115. $valid = Zend_Uri::check('http://example.com/?q=this|that');
  116. // しかし、"unwise" 文字を許可することもできます
  117. Zend_Uri::setConfig(array('allow_unwise' => true));
  118. // これは 'true' を返します
  119. $valid = Zend_Uri::check('http://example.com/?q=this|that');
  120. // 'allow_unwise' の値をデフォルトの FALSE に戻します
  121. Zend_Uri::setConfig(array('allow_unwise' => false));
  122. ]]></programlisting>
  123. </example>
  124. <note>
  125. <para>
  126. <methodname>Zend_Uri::setConfig()</methodname> は、全体の設定オプションを変更します。
  127. そのため、上の例のように最後は 'allow_unwise' を '<constant>FALSE</constant>'
  128. に戻すことを推奨します。unwise な文字を常に許可したいという場合は別です。
  129. </para>
  130. </note>
  131. </sect3>
  132. </sect2>
  133. <sect2 id="zend.uri.instance-methods">
  134. <title>共通のインスタンスメソッド</title>
  135. <para>
  136. すべての <classname>Zend_Uri</classname> のサブクラス (例
  137. <classname>Zend_Uri_Http</classname>) のインスタンスには、
  138. <acronym>URI</acronym> 操作のために便利なインスタンスメソッドがいくつか提供されています。
  139. </para>
  140. <sect3 id="zend.uri.instance-methods.getscheme">
  141. <title>URI のスキームの取得</title>
  142. <para>
  143. <acronym>URI</acronym> のスキームとは、<acronym>URI</acronym> でカンマの前にくる部分のことです。
  144. たとえば <code>http://www.zend.com</code> のスキームは
  145. <code>http</code> となります。
  146. </para>
  147. <example id="zend.uri.instance-methods.getscheme.example-1">
  148. <title>Zend_Uri_* オブジェクトからのスキームの取得</title>
  149. <programlisting language="php"><![CDATA[
  150. $uri = Zend_Uri::factory('http://www.zend.com');
  151. $scheme = $uri->getScheme(); // "http"
  152. ]]></programlisting>
  153. </example>
  154. <para>
  155. インスタンスメソッド <methodname>getScheme()</methodname> は、
  156. <acronym>URI</acronym> オブジェクトからスキームの部分のみを返します。
  157. </para>
  158. </sect3>
  159. <sect3 id="zend.uri.instance-methods.geturi">
  160. <title>URI 全体の取得</title>
  161. <example id="zend.uri.instance-methods.geturi.example-1">
  162. <title>Zend_Uri_* オブジェクトからの URI 全体の取得</title>
  163. <programlisting language="php"><![CDATA[
  164. $uri = Zend_Uri::factory('http://www.zend.com');
  165. echo $uri->getUri(); // "http://www.zend.com"
  166. ]]></programlisting>
  167. </example>
  168. <para>
  169. <methodname>getUri()</methodname> メソッドは、<acronym>URI</acronym> 全体を文字列として返します。
  170. </para>
  171. </sect3>
  172. <sect3 id="zend.uri.instance-methods.valid">
  173. <title>URI の検証</title>
  174. <para>
  175. <methodname>Zend_Uri::factory()</methodname> は渡された <acronym>URI</acronym> を常に検証しており、
  176. 渡された <acronym>URI</acronym> が無効な場合は <classname>Zend_Uri</classname>
  177. のサブクラスのインスタンスを作成しません。しかし、いったん
  178. <classname>Zend_Uri</classname> のサブクラスのインスタンスを
  179. (新規に、あるいは既存のものから) 作成し、
  180. それを操作した後でもまだ妥当な形式であるかどうかを調べることもできます。
  181. </para>
  182. <example id="zend.uri.instance-methods.valid.example-1">
  183. <title>Zend_Uri_* オブジェクトの検証</title>
  184. <programlisting language="php"><![CDATA[
  185. $uri = Zend_Uri::factory('http://www.zend.com');
  186. $isValid = $uri->valid(); // TRUE
  187. ]]></programlisting>
  188. </example>
  189. <para>
  190. インスタンスメソッド <methodname>valid()</methodname> により、
  191. <acronym>URI</acronym> オブジェクトが妥当なものかどうかを調べることができます。
  192. </para>
  193. </sect3>
  194. </sect2>
  195. </sect1>
  196. <!--
  197. vim:se ts=4 sw=4 et:
  198. -->