Zend_Uri.xml 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <sect1 id="zend.uri.chapter">
  2. <title>Zend_Uri</title>
  3. <sect2 id="zend.uri.overview">
  4. <title>概述</title>
  5. <para>
  6. <code>Zend_Uri</code> 是一个辅助于操作和验证<ulink url="http://www.w3.org/Addressing/">统一资源标识符</ulink> (URIs)的组件.
  7. <code>Zend_Uri</code> 的存在主要是为其他组件服务的,比如<code>Zend_Http_Client</code>,但是作为一个独立的工具也是有用的.
  8. </para>
  9. <para>
  10. URIs 总是以一个schema(模式,协议)开始,后跟一个冒号(colon).<code>Zend_Uri</code>类提供一个工厂,
  11. 返回一个它本身的 适应于每种模式(scheme)的 子类,子类被命名为<code>Zend_Uri_&lt;scheme&gt;</code>,
  12. <code>&lt;scheme&gt;</code>是首字母大写的模式名称.一个例外是HTTPS,它也是由<code>Zend_Uri_Http</code>处理的.
  13. </para>
  14. </sect2>
  15. <sect2 id="zend.uri.creation">
  16. <title>新建一个URI</title>
  17. <para>
  18. 如果仅有一个模式被传递给<code>Zend_Uri::factory()</code>,<code>Zend_Uri</code>将从头构造一个新的URI.
  19. </para>
  20. <example>
  21. <title>使用<code>Zend_Uri::factory()</code>创建一个新的URI</title>
  22. <programlisting role="php"><![CDATA[
  23. <?php
  24. require_once 'Zend/Uri.php';
  25. // 重新创建一个新的URI,仅传递模式.
  26. $uri = Zend_Uri::factory('http');
  27. // $uri instanceof Zend_Uri_Http
  28. ?>]]></programlisting>
  29. </example>
  30. <para>
  31. 从头创建一个的新的URI,仅仅需要传递模式给<code>Zend_Uri::factory()</code><footnote><para>
  32. 在撰写本文时,Zend_Uri仅支持HTTP和HTTPS模式.</para></footnote> .
  33. 如果传递了一个未支持的模式,<code>Zend_Uri_Exception</code>异常将被抛出.
  34. </para>
  35. <para>
  36. 如果传递的模式或者URI被支持,<code>Zend_Uri::factory()</code>返回一个它本身的 适应于特定模式(scheme)的 子类
  37. </para>
  38. </sect2>
  39. <sect2 id="zend.uri.manipulation">
  40. <title>操作现有的URI</title>
  41. <para>
  42. 要操作一个现有的URL,把整个URI传递给<code>Zend_Uri::factory()</code>.
  43. </para>
  44. <example>
  45. <title>使用<code>Zend_Uri::factory()</code>操作一个现有的URI</title>
  46. <programlisting role="php"><![CDATA[
  47. <?php
  48. require_once 'Zend/Uri.php';
  49. // 操作一个现有的URI,把他传入到Zend_Uri::factory().
  50. $uri = Zend_Uri::factory('http://www.zend.com');
  51. // $uri instanceof Zend_Uri_Http
  52. ?>]]></programlisting>
  53. </example>
  54. <para>
  55. 这个URI将被解析并且验证.如果发现它是无效的,<code>Zend_Uri_Exception</code>异常立即抛出.否则<code>Zend_Uri::factory()</code>
  56. 返回一个它本身的 适应于特定模式(scheme)的 子类
  57. </para>
  58. </sect2>
  59. <sect2 id="zend.uri.validation">
  60. <title>URI 验证</title>
  61. <para>
  62. <code>Zend_Uri::check()</code> 函数仅在需要验证一个现有的URI时使用.
  63. </para>
  64. <example>
  65. <title>使用<code>Zend_Uri::check()</code>进行URI 验证</title>
  66. <programlisting role="php"><![CDATA[
  67. <?php
  68. require_once 'Zend/Uri.php';
  69. // 验证一个给定的URI是否是格式良好的
  70. $valid = Zend_Uri::check('http://uri.in.question');
  71. // 对于一个有效的URI,$valid为TRUE,否则为FALSE
  72. ?>]]></programlisting>
  73. </example>
  74. <para>
  75. <code>Zend_Uri::check()</code> 返回布尔值,它比使用<code>Zend_Uri::factory()</code>更便捷,并且能够捕获异常.
  76. </para>
  77. </sect2>
  78. <sect2 id="zend.uri.instance-methods">
  79. <title>公共实例方法</title>
  80. <para>
  81. 每个<code>Zend_Uri</code>子类的实例(如:<code>Zend_Uri_Http</code>)有多个 有用的 处理任何类型的 URI的实例方法.
  82. </para>
  83. <sect3 id="zend.uri.instance-methods.getscheme">
  84. <title>取得URI的Schema</title>
  85. <para>
  86. URI模式是冒号之前的部分.例如<code>http://www.zend.com</code>的模式是<code>http</code>.
  87. </para>
  88. <example>
  89. <title>从<code>Zend_Uri_*</code> 对象取得模式</title>
  90. <programlisting role="php"><![CDATA[
  91. <?php
  92. require_once 'Zend/Uri.php';
  93. $uri = Zend_Uri::factory('http://www.zend.com');
  94. $scheme = $uri->getScheme(); // "http"
  95. ?>]]></programlisting>
  96. </example>
  97. <para>
  98. <code>getScheme()</code>实例方法仅返回URI对象的模式部分.
  99. </para>
  100. </sect3>
  101. <sect3 id="zend.uri.instance-methods.geturi">
  102. <title>取得整个URI</title>
  103. <example>
  104. <title>从一个<code>Zend_Uri_*</code> 对象取得整个URI</title>
  105. <programlisting role="php"><![CDATA[
  106. <?php
  107. require_once 'Zend/Uri.php';
  108. $uri = Zend_Uri::factory('http://www.zend.com');
  109. echo $uri->getUri(); // "http://www.zend.com"
  110. ?>]]></programlisting>
  111. </example>
  112. <para>
  113. <code>getUri()</code>方法返回整个URI的字符串标识.
  114. </para>
  115. </sect3>
  116. <sect3 id="zend.uri.instance-methods.valid">
  117. <title>验证URI</title>
  118. <para>
  119. <code>Zend_Uri::factory()</code>总是验证传递给它的任何URI,如果给定的URI被认为是无效的,它将不会实例化一个新的<code>Zend_Uri</code> 子类.但是
  120. <code>Zend_Uri</code>子类为 一个新URI 或者 一个现有的有效的URL 被实例化后,在操作后 该URI可能会变得无效.
  121. </para>
  122. <example>
  123. <title>验证一个 <code>Zend_Uri_*</code> 对象</title>
  124. <programlisting role="php"><![CDATA[
  125. <?php
  126. require_once 'Zend/Uri.php';
  127. $uri = Zend_Uri::factory('http://www.zend.com');
  128. $isValid = $uri->valid(); // TRUE
  129. ?>]]></programlisting>
  130. </example>
  131. <para>
  132. <code>valid()</code>实例方法检查URI对象是否仍是有效的.
  133. </para>
  134. </sect3>
  135. </sect2>
  136. </sect1>
  137. <!--
  138. vim:se ts=4 sw=4 et:
  139. -->