| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <sect1 id="zend.uri.chapter">
- <title>Zend_Uri</title>
- <sect2 id="zend.uri.overview">
- <title>概述</title>
- <para>
- <code>Zend_Uri</code> 是一个辅助于操作和验证<ulink url="http://www.w3.org/Addressing/">统一资源标识符</ulink> (URIs)的组件.
- <code>Zend_Uri</code> 的存在主要是为其他组件服务的,比如<code>Zend_Http_Client</code>,但是作为一个独立的工具也是有用的.
- </para>
- <para>
- URIs 总是以一个schema(模式,协议)开始,后跟一个冒号(colon).<code>Zend_Uri</code>类提供一个工厂,
- 返回一个它本身的 适应于每种模式(scheme)的 子类,子类被命名为<code>Zend_Uri_<scheme></code>,
- <code><scheme></code>是首字母大写的模式名称.一个例外是HTTPS,它也是由<code>Zend_Uri_Http</code>处理的.
- </para>
- </sect2>
- <sect2 id="zend.uri.creation">
- <title>新建一个URI</title>
- <para>
- 如果仅有一个模式被传递给<code>Zend_Uri::factory()</code>,<code>Zend_Uri</code>将从头构造一个新的URI.
- </para>
- <example>
- <title>使用<code>Zend_Uri::factory()</code>创建一个新的URI</title>
- <programlisting role="php"><![CDATA[
- <?php
- require_once 'Zend/Uri.php';
- // 重新创建一个新的URI,仅传递模式.
- $uri = Zend_Uri::factory('http');
- // $uri instanceof Zend_Uri_Http
- ?>]]></programlisting>
- </example>
- <para>
- 从头创建一个的新的URI,仅仅需要传递模式给<code>Zend_Uri::factory()</code><footnote><para>
- 在撰写本文时,Zend_Uri仅支持HTTP和HTTPS模式.</para></footnote> .
- 如果传递了一个未支持的模式,<code>Zend_Uri_Exception</code>异常将被抛出.
- </para>
- <para>
- 如果传递的模式或者URI被支持,<code>Zend_Uri::factory()</code>返回一个它本身的 适应于特定模式(scheme)的 子类
- </para>
- </sect2>
- <sect2 id="zend.uri.manipulation">
- <title>操作现有的URI</title>
- <para>
- 要操作一个现有的URL,把整个URI传递给<code>Zend_Uri::factory()</code>.
- </para>
- <example>
- <title>使用<code>Zend_Uri::factory()</code>操作一个现有的URI</title>
- <programlisting role="php"><![CDATA[
- <?php
- require_once 'Zend/Uri.php';
- // 操作一个现有的URI,把他传入到Zend_Uri::factory().
- $uri = Zend_Uri::factory('http://www.zend.com');
- // $uri instanceof Zend_Uri_Http
- ?>]]></programlisting>
- </example>
- <para>
- 这个URI将被解析并且验证.如果发现它是无效的,<code>Zend_Uri_Exception</code>异常立即抛出.否则<code>Zend_Uri::factory()</code>
- 返回一个它本身的 适应于特定模式(scheme)的 子类
- </para>
- </sect2>
- <sect2 id="zend.uri.validation">
- <title>URI 验证</title>
- <para>
- <code>Zend_Uri::check()</code> 函数仅在需要验证一个现有的URI时使用.
- </para>
- <example>
- <title>使用<code>Zend_Uri::check()</code>进行URI 验证</title>
- <programlisting role="php"><![CDATA[
- <?php
- require_once 'Zend/Uri.php';
- // 验证一个给定的URI是否是格式良好的
- $valid = Zend_Uri::check('http://uri.in.question');
- // 对于一个有效的URI,$valid为TRUE,否则为FALSE
- ?>]]></programlisting>
- </example>
- <para>
- <code>Zend_Uri::check()</code> 返回布尔值,它比使用<code>Zend_Uri::factory()</code>更便捷,并且能够捕获异常.
- </para>
- </sect2>
- <sect2 id="zend.uri.instance-methods">
- <title>公共实例方法</title>
- <para>
- 每个<code>Zend_Uri</code>子类的实例(如:<code>Zend_Uri_Http</code>)有多个 有用的 处理任何类型的 URI的实例方法.
- </para>
- <sect3 id="zend.uri.instance-methods.getscheme">
- <title>取得URI的Schema</title>
- <para>
- URI模式是冒号之前的部分.例如<code>http://www.zend.com</code>的模式是<code>http</code>.
- </para>
- <example>
- <title>从<code>Zend_Uri_*</code> 对象取得模式</title>
- <programlisting role="php"><![CDATA[
- <?php
- require_once 'Zend/Uri.php';
- $uri = Zend_Uri::factory('http://www.zend.com');
- $scheme = $uri->getScheme(); // "http"
- ?>]]></programlisting>
- </example>
- <para>
- <code>getScheme()</code>实例方法仅返回URI对象的模式部分.
- </para>
- </sect3>
- <sect3 id="zend.uri.instance-methods.geturi">
- <title>取得整个URI</title>
- <example>
- <title>从一个<code>Zend_Uri_*</code> 对象取得整个URI</title>
- <programlisting role="php"><![CDATA[
- <?php
- require_once 'Zend/Uri.php';
- $uri = Zend_Uri::factory('http://www.zend.com');
- echo $uri->getUri(); // "http://www.zend.com"
- ?>]]></programlisting>
- </example>
- <para>
- <code>getUri()</code>方法返回整个URI的字符串标识.
- </para>
- </sect3>
- <sect3 id="zend.uri.instance-methods.valid">
- <title>验证URI</title>
- <para>
- <code>Zend_Uri::factory()</code>总是验证传递给它的任何URI,如果给定的URI被认为是无效的,它将不会实例化一个新的<code>Zend_Uri</code> 子类.但是
- <code>Zend_Uri</code>子类为 一个新URI 或者 一个现有的有效的URL 被实例化后,在操作后 该URI可能会变得无效.
- </para>
- <example>
- <title>验证一个 <code>Zend_Uri_*</code> 对象</title>
- <programlisting role="php"><![CDATA[
- <?php
- require_once 'Zend/Uri.php';
- $uri = Zend_Uri::factory('http://www.zend.com');
- $isValid = $uri->valid(); // TRUE
- ?>]]></programlisting>
- </example>
- <para>
- <code>valid()</code>实例方法检查URI对象是否仍是有效的.
- </para>
- </sect3>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|