Inhaltsverzeichnis
        Zend_Uri ist eine Komponente, die das Verändern und Validieren von 
        Uniform Resource Identifiers (URIs)
        unterstützt. Zend_Uri existiert hauptsächlich, um andere Komponenten wie z.B. 
        Zend_Http_Client zu unterstützen, aber ist auch als eigenständiges Hilfsmittel
        nützlich.
    
        URIs beginnen immer mit einem Schema, gefolgt von einem Doppelpunkt. Der Aufbau der vielen
        unterschiedlichen Schemata unterscheidet sich erheblich. Die Zend_Uri stellt
        eine Fabrik (Factory) bereit, die eine Unterklasse von sich selber zurück gibt, die auf das 
        entsprechende Schema spezialisiert ist. Diese Unterklasse heißt 
        Zend_Uri_<scheme>, wobei <scheme> das Schema in 
        Kleinbuchstaben mit einem Großbuchstaben am Anfang darstellt. Eine Ausnahme dieser Regel ist
        HTTPS, das auch von Zend_Uri_Http verarbeitet wird.
    
        Zend_Uri erstellt eine neue URI von Grund auf, wenn nur das Schema an 
        Zend_Uri::factory() übergeben wurde.
    
Beispiel 32.1. Erstellen einer neuen URI mit Zend_Uri::factory()
<?php
require_once 'Zend/Uri.php';
// Um eine neue URI von Grund auf zu erstellen, übergebe nur das Schema.
$uri = Zend_Uri::factory('http');
// $uri instanceof Zend_Uri_Http
 
?>
        Um eine neue URI von Grund auf zu erstellen, übergibt man nur das Schema an 
        Zend_Uri::factory()[11] . Wenn eine nicht unterstütztes 
        Schema übergeben wird, wird eine Zend_Uri_Exception ausgeworfen.
    
        Wenn das Schema oder die übergebene URI unterstützt wird, gibt 
        Zend_Uri::factory() eine Unterklasse von sich selbst zurück, die auf das zu
        erstellende Schema spezialisiert ist.
    
        Um eine vorhandene URI zu verändern, übergibt man die komplett URI an 
        Zend_Uri::factory(). 
    
Beispiel 32.2. Verändern einer vorhandenen URI mit Zend_Uri::factory()
<?php
require_once 'Zend/Uri.php';
// Um eine vorhandene URI zu verändern, übergibt man sie.
$uri = Zend_Uri::factory('http://www.zend.com');
// $uri instanceof Zend_Uri_Http
 
?>
        Die URI wird analysiert und validiert. Wenn sie als ungültig erkannt wird, wird sofort eine
        Zend_Uri_Exception geworfen. Andernfalls gibt Zend_Uri::factory()
        eine Unterklasse von sich selbst zurück, die auf das zu verändernde Schema spezialisiert 
        ist.
    
        Die Zend_Uri::check() Methode kann verwendet werden, wenn nur das Validieren
        einer vorhandenen URI benötigt wird.
    
Beispiel 32.3. URI Validierung mit Zend_Uri::check()
<?php
require_once 'Zend/Uri.php';
// Überprüfe, ob eine übergebe URI wohlgeformt ist
$valid = Zend_Uri::check('http://uri.in.question');
// $valid ist TRUE für eine valide URI, andernfalls FALSE
 
?>
        Zend_Uri::check() gibt ein Boolean zurück, was einfacher ist, als 
        Zend_Uri::factory() zu verwenden und eine Ausnahme abzufangen.
    
        Jede Instant einer Zend_Uri Unterklasse (z.B. Zend_Uri_Http) hat
        verschiedene Instanzmethoden, die für die Verwendung mit jeglicher URI nützlich sind.
    
          Das Schema der URI ist der Teil der URI vor dem Doppelpunkt. Zum Beispiel ist 
          http das Schema von http://www.zend.com.
      
Beispiel 32.4. Das Schema eines Zend_Uri_* Objektes erhalten
<?php
require_once 'Zend/Uri.php';
$uri = Zend_Uri::factory('http://www.zend.com');
$scheme = $uri->getScheme();  // "http"
 
?>
          Die getScheme() Instanzmethode gibt nur das Schema des URI Objektes 
          zurück.
      
Beispiel 32.5. Die komplette URI eines Zend_Uri_* Objektes erhalten
<?php
require_once 'Zend/Uri.php';
$uri = Zend_Uri::factory('http://www.zend.com');
echo $uri->getUri();  // "http://www.zend.com"
 
?>
          Die getUri() Methode gibt den String zurück, der die komplette URI 
          repräsentiert.
      
          Zend_Uri::factory() validiert immer jede übergebene URI und wird keine 
          Zend_Uri Unterklasse instantieren, wenn die übergebene URI ungültig ist. 
          Dennoch ist es nach der Instanzierung der Zend_Uri Unterklasse für eine neue
          oder eine bestehende URI möglich, dass die URI später ungültig wird, nachdem sie verändert
          worden ist.
      
Beispiel 32.6. Ein Zend_Uri_* Object validieren
<?php
require_once 'Zend/Uri.php';
$uri = Zend_Uri::factory('http://www.zend.com');
$isValid = $uri->valid();  // TRUE
 
?>
          Die valid() Instanzmethode ermöglicht es, das URI Objekt auf Gültigkeit zu
          überprüfen.