Zend_Uri.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <sect1 id="zend.uri.chapter">
  2. <title>Zend_Uri</title>
  3. <sect2 id="zend.uri.overview">
  4. <title>Обзор<!--Overview--></title>
  5. <para>
  6. <code>Zend_Uri</code> является компонентой, которая призвана облегчить
  7. работу с URI (<ulink url="http://www.w3.org/Addressing/">Uniform Resource
  8. Identifiers</ulink>) и их валидацию. <code>Zend_Uri</code> был создан для
  9. обслуживания других компонент, таких, как <code>Zend_Http_Client</code>,
  10. но полезен и как отдельная утилита.
  11. <!--
  12. <code>Zend_Uri</code> is a component that aids in manipulating and
  13. validating <ulink url="http://www.w3.org/Addressing/">Uniform Resource
  14. Identifiers</ulink> (URIs). <code>Zend_Uri</code> exists primarily to
  15. service other components such as <code>Zend_Http_Client</code> but is
  16. also useful as a standalone utility.
  17. -->
  18. </para>
  19. <para>
  20. URI всегда начинаются со схемы, после которой следует двоеточие. Структура
  21. для разных схем может сильно отличаться. Класс <code>Zend_Uri</code>
  22. предоставляет фабрику (паттерн factory), которая возвращает его подклассы,
  23. специализирующиеся в различных схемах. Подклассы называются
  24. <code>Zend_Uri_&lt;scheme&gt;</code>, где <code>&lt;scheme&gt;</code> -
  25. схема в нижнем регистре, с прописной первой буквой. Исключением из этого
  26. правила является HTTPS, который обрабатывается подклассом
  27. <code>Zend_Uri_Http</code>.
  28. <!--
  29. URIs always begin with a scheme, followed by a colon. The construction
  30. of the many different schemes varies significantly. The
  31. <code>Zend_Uri</code> class provides a factory that returns a subclass of
  32. itself which specializes in each scheme. The subclass
  33. will be named <code>Zend_Uri_&lt;scheme&gt;</code>, where
  34. <code>&lt;scheme&gt;</code> is the scheme lowercased with the first
  35. letter capitalized. An exception to this rule is HTTPS, which is also
  36. handled by <code>Zend_Uri_Http</code>.
  37. -->
  38. </para>
  39. </sect2>
  40. <sect2 id="zend.uri.creation">
  41. <title>Создание нового URI<!--Creating a New URI--></title>
  42. <para>
  43. <code>Zend_Uri</code> будет строить с нуля новый URI, если
  44. <code>Zend_Uri::factory()</code> была передана только схема.
  45. <!--
  46. <code>Zend_Uri</code> will build a new URI from scratch if only a scheme
  47. is passed to <code>Zend_Uri::factory()</code>.
  48. -->
  49. </para>
  50. <example>
  51. <title>Создание нового URI с <code>Zend_Uri::factory()</code><!--Creating a New URI with <code>Zend_Uri::factory()</code>--></title>
  52. <programlisting role="php"><![CDATA[
  53. <?php
  54. require_once 'Zend/Uri.php';
  55. // Для того, чтобы создать с нуля новый URI, передайте только схему.
  56. $uri = Zend_Uri::factory('http');
  57. // $uri является экземпляром Zend_Uri_Http
  58. ?>]]></programlisting>
  59. </example>
  60. <para>
  61. Для того, чтобы создать с нуля новый URI, передайте
  62. <code>Zend_Uri::factory()</code> только схему. <footnote><para>На момент
  63. написания этой документации Zend_Uri поддерживает только схемы HTTP и
  64. HTTPS.</para></footnote>. При передаче не поддерживаемой схемы
  65. генерируется исключение <code>Zend_Uri_Exception</code>.
  66. <!--
  67. To create a new URI from scratch, pass only the scheme to
  68. <code>Zend_Uri::factory()</code><footnote><para>At the time of writing,
  69. Zend_Uri only supports the HTTP and HTTPS schemes.</para></footnote> .
  70. If an unsupported scheme is passed, a <code>Zend_Uri_Exception</code>
  71. will be thrown.
  72. -->
  73. </para>
  74. <para>
  75. Если переданные схема или URI поддерживаются, то
  76. <code>Zend_Uri::factory()</code> вернет свой подкласс, который
  77. специализируется на данной схеме.
  78. <!--
  79. If the scheme or URI passed is supported,
  80. <code>Zend_Uri::factory()</code> will return a subclass of itself that
  81. specializes in the scheme to be created.
  82. -->
  83. </para>
  84. </sect2>
  85. <sect2 id="zend.uri.manipulation">
  86. <title>Работа с существующим URI<!--Manipulating an Existing URI--></title>
  87. <para>
  88. Для того, чтобы работать с существующим URI, передайте его весь целиком
  89. <code>Zend_Uri::factory()</code>.
  90. <!--
  91. To manipulate an existing URI, pass the entire URI to
  92. <code>Zend_Uri::factory()</code>.
  93. -->
  94. </para>
  95. <example>
  96. <title>Работа с существующим URI с <code>Zend_Uri::factory()</code><!--Manipulating an Existing URI with <code>Zend_Uri::factory()</code>--></title>
  97. <programlisting role="php"><![CDATA[
  98. <?php
  99. require_once 'Zend/Uri.php';
  100. // Чтобы работать с существующим URI, передайте его как параметр
  101. $uri = Zend_Uri::factory('http://www.zend.com');
  102. // $uri является экземпляром Zend_Uri_Http
  103. ?>]]></programlisting>
  104. </example>
  105. <para>
  106. URI будет распарсен и проверен на валидность. Если он оказался невалидным,
  107. то сразу же будет сгенерировано исключение
  108. <code>Zend_Uri_Exception</code>. Иначе <code>Zend_Uri::factory()</code>
  109. вернет свой подкласс, который специализируется на данной схеме.
  110. <!--
  111. The URI will be parsed and validated. If it is found to be invalid, a
  112. <code>Zend_Uri_Exception</code> will be thrown immediately. Otherwise,
  113. <code>Zend_Uri::factory()</code> will return a subclass of itself that
  114. specializes in the scheme to be manipulated.
  115. -->
  116. </para>
  117. </sect2>
  118. <sect2 id="zend.uri.validation">
  119. <title>Проверка URI<!--URI Validation--></title>
  120. <para>
  121. Функция <code>Zend_Uri::check()</code> может использоваться в том случае,
  122. когда нужна только проверка существующего URI.
  123. <!--
  124. The <code>Zend_Uri::check()</code> function can be used if only
  125. validation of an existing URI is needed.
  126. -->
  127. </para>
  128. <example>
  129. <title>Проверка URI с помощью <code>Zend_Uri::check()</code><!--URI Validation with <code>Zend_Uri::check()</code>--></title>
  130. <programlisting role="php"><![CDATA[
  131. <?php
  132. require_once 'Zend/Uri.php';
  133. // Проверка, является ли данный URI синтаксически корректным
  134. $valid = Zend_Uri::check('http://uri.in.question');
  135. // $valid равен TRUE при валидном URI, иначе FALSE
  136. ?>]]></programlisting>
  137. </example>
  138. <para>
  139. <code>Zend_Uri::check()</code> возвращает булево значение, использование
  140. этой функции более удобно, чем вызов <code>Zend_Uri::factory()</code> и
  141. отлов исключения.
  142. <!--
  143. <code>Zend_Uri::check()</code> returns a boolean,
  144. which is more convenient than using <code>Zend_Uri::factory()</code>
  145. and catching the exception.
  146. -->
  147. </para>
  148. </sect2>
  149. <sect2 id="zend.uri.instance-methods">
  150. <title>Общие методы<!--Common Instance Methods--></title>
  151. <para>
  152. Каждый экземпляр подкласса <code>Zend_Uri</code> (т.е.
  153. <code>Zend_Uri_Http</code>) имеет несколько методов экземпляров, которые
  154. полезны для работы с любыми видами URI.
  155. <!--
  156. Every instance of a <code>Zend_Uri</code> subclass (e.g.
  157. <code>Zend_Uri_Http</code>) has several instance methods that are useful
  158. for working with any kind of URI.
  159. -->
  160. </para>
  161. <sect3 id="zend.uri.instance-methods.getscheme">
  162. <title>Получение схемы URI<!--Getting the Scheme of the URI--></title>
  163. <para>
  164. Схема URI – часть URI, завершающаяся двоеточием. Например, схемой в
  165. <code>http://www.zend.com</code> является <code>http</code>.
  166. <!--
  167. The scheme of the URI is the part of the URI that precedes the colon. For example,
  168. the scheme of <code>http://www.zend.com</code> is <code>http</code>.
  169. -->
  170. </para>
  171. <example>
  172. <title>Получение схемы из объекта <code>Zend_Uri_*</code><!--Getting the Scheme from a <code>Zend_Uri_*</code> Object--></title>
  173. <programlisting role="php"><![CDATA[
  174. <?php
  175. require_once 'Zend/Uri.php';
  176. $uri = Zend_Uri::factory('http://www.zend.com');
  177. $scheme = $uri->getScheme(); // "http"
  178. ?>]]></programlisting>
  179. </example>
  180. <para>
  181. Метод экземпляра <code>getScheme()</code> возвращает схему из URI.
  182. <!--
  183. The <code>getScheme()</code> instance method returns only the scheme part of
  184. the URI object.
  185. -->
  186. </para>
  187. </sect3>
  188. <sect3 id="zend.uri.instance-methods.geturi">
  189. <title>Получение всего URI<!--Getting the Entire URI--></title>
  190. <example>
  191. <title>Получение всего URI из объекта <code>Zend_Uri_*</code><!--Getting the Entire URI from a <code>Zend_Uri_*</code> Object--></title>
  192. <programlisting role="php"><![CDATA[
  193. <?php
  194. require_once 'Zend/Uri.php';
  195. $uri = Zend_Uri::factory('http://www.zend.com');
  196. echo $uri->getUri(); // "http://www.zend.com"
  197. ?>]]></programlisting>
  198. </example>
  199. <para>
  200. Метод <code>getUri()</code> возвращает строковое представление всего
  201. URI.
  202. <!--
  203. The <code>getUri()</code> method returns the string representation
  204. of the entire URI.
  205. -->
  206. </para>
  207. </sect3>
  208. <sect3 id="zend.uri.instance-methods.valid">
  209. <title>Проверка URI на валидность<!--Validating the URI--></title>
  210. <para>
  211. <code>Zend_Uri::factory()</code> всегда производит синтаксическую
  212. проверку переданных ему URI и не будет создавать новый экземпляр
  213. подкласса <code>Zend_Uri</code>, если данный URI не прошел проверку.
  214. Тем не менее, после того, как был инстанцирован подкласс
  215. <code>Zend_Uri</code> для нового URI или на основе уже существующего,
  216. в результате манипуляций с ним этот URI может стать невалидным.
  217. <!--
  218. <code>Zend_Uri::factory()</code> will always validate any URI passed
  219. to it and will not instantiate a new <code>Zend_Uri</code> subclass
  220. if the given URI is found to be invalid. However, after the
  221. <code>Zend_Uri</code> subclass is instantiated for a new URI or a
  222. valid existing one, it is possible that the URI can then later become
  223. invalid after it is manipulated.
  224. -->
  225. </para>
  226. <example>
  227. <title>Проверка объекта <code>Zend_Uri_*</code><!--Validating a <code>Zend_Uri_*</code> Object--></title>
  228. <programlisting role="php"><![CDATA[
  229. <?php
  230. require_once 'Zend/Uri.php';
  231. $uri = Zend_Uri::factory('http://www.zend.com');
  232. $isValid = $uri->valid(); // TRUE
  233. ?>]]></programlisting>
  234. </example>
  235. <para>
  236. Метод <code>valid()</code> дает возможность проверить, является ли URI
  237. по-прежнему валидным.
  238. <!--
  239. The <code>valid()</code> instance method provides a means to check that the
  240. URI object is still valid.
  241. -->
  242. </para>
  243. </sect3>
  244. </sect2>
  245. </sect1>
  246. <!--
  247. vim:se ts=4 sw=4 et:
  248. -->