Zend_Uri
Overview
Zend_Uri is a component that aids in manipulating and
validating Uniform Resource
Identifiers (URIs). Zend_Uri exists primarily to
service other components such as Zend_Http_Client but is
also useful as a standalone utility.
URIs always begin with a scheme, followed by a colon. The construction
of the many different schemes varies significantly. The
Zend_Uri class provides a factory that returns a subclass of
itself which specializes in each scheme. The subclass
will be named Zend_Uri_<scheme>, where
<scheme> is the scheme lowercased with the first
letter capitalized. An exception to this rule is HTTPS, which is also
handled by Zend_Uri_Http.
Creating a New URI
Zend_Uri will build a new URI from scratch if only a scheme
is passed to Zend_Uri::factory().
Creating a New URI with Zend_Uri::factory()
To create a new URI from scratch, pass only the scheme to
Zend_Uri::factory()At the time of writing,
Zend_Uri only supports the HTTP and HTTPS schemes. .
If an unsupported scheme is passed, a Zend_Uri_Exception
will be thrown.
If the scheme or URI passed is supported,
Zend_Uri::factory() will return a subclass of itself that
specializes in the scheme to be created.
Manipulating an Existing URI
To manipulate an existing URI, pass the entire URI to
Zend_Uri::factory().
Manipulating an Existing URI with Zend_Uri::factory()
The URI will be parsed and validated. If it is found to be invalid, a
Zend_Uri_Exception will be thrown immediately. Otherwise,
Zend_Uri::factory() will return a subclass of itself that
specializes in the scheme to be manipulated.
URI Validation
The Zend_Uri::check() function can be used if only
validation of an existing URI is needed.
URI Validation with Zend_Uri::check()
Zend_Uri::check() returns a boolean,
which is more convenient than using Zend_Uri::factory()
and catching the exception.
Allowing "Unwise" characters in URIs
By default, Zend_Uri will not accept the following characters, defined by
the RFC as "unwise" and invalid: "{", "}", "|", "\", "^", "`".
However, many implementations do accept these characters as valid.
Zend_Uri can be set to accept these "unwise" characters by setting the
'allow_unwise' option to boolean TRUE using the Zend_Uri::setConfig()
method:
Allowing special characters in URIs
true));
// will return 'true'
$valid = Zend_Uri::check('http://example.com/?q=this|that');
// Reset the 'allow_unwise' value to the default FALSE
Zend_Uri::setConfig(array('allow_unwise' => false));
]]>
Zend_Uri::setConfig() sets configuration options globally.
It is recommended to reset the 'allow_unwise' option to 'false' like in
the example above, unless you are certain you want to always allow
unwise characters globally.
Common Instance Methods
Every instance of a Zend_Uri subclass (e.g.
Zend_Uri_Http) has several instance methods that are useful
for working with any kind of URI.
Getting the Scheme of the URI
The scheme of the URI is the part of the URI that precedes the colon. For example,
the scheme of http://www.zend.com is http.
Getting the Scheme from a Zend_Uri_* Object
getScheme(); // "http"
]]>
The getScheme() instance method returns only the scheme part of
the URI object.
Getting the Entire URI
Getting the Entire URI from a Zend_Uri_* Object
getUri(); // "http://www.zend.com"
]]>
The getUri() method returns the string representation
of the entire URI.
Validating the URI
Zend_Uri::factory() will always validate any URI passed
to it and will not instantiate a new Zend_Uri subclass
if the given URI is found to be invalid. However, after the
Zend_Uri subclass is instantiated for a new URI or a
valid existing one, it is possible that the URI can then later become
invalid after it is manipulated.
Validating a Zend_Uri_* Object
valid(); // TRUE
]]>
The valid() instance method provides a means to check that the
URI object is still valid.