Kapitel 26. Zend_Uri
Zurück |  | Weiter

## Kapitel 26. Zend_Uri

## 26.1. Zend_Uri

### 26.1.1. Überblick

`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.

### 26.1.2. Eine neue URI erstellen

`Zend_Uri` erstellt eine neue URI von Grund auf, wenn nur das Schema an `Zend_Uri::factory()` übergeben wurde.

Beispiel 26.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()`[12] . 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.

### 26.1.3. Verändern einer vorhandenen URI

Um eine vorhandene URI zu verändern, übergibt man die komplett URI an `Zend_Uri::factory()`.

Beispiel 26.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.

### 26.1.4. URI Validierung

Die `Zend_Uri::check()` Methode kann verwendet werden, wenn nur das Validieren einer vorhandenen URI benötigt wird.

Beispiel 26.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.

### 26.1.5. Allgemeine Instanzmethoden

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.

#### 26.1.5.1. Das Schema der URI erhalten

Das Schema der URI ist der Teil der URI vor dem Doppelpunkt. Zum Beispiel ist `http` das Schema von `http://www.zend.com`.

Beispiel 26.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.

#### 26.1.5.2. Die komplette URI erhalten

Beispiel 26.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.

#### 26.1.5.3. Die URI validieren

`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 26.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.

[12] Zum Zeitpunkt des Schreiben unterstützt Zend_Uri nur HTTP uznd HTTPS Schemata

Zurück |  | Weiter
25.5. Theory | Zum Anfang | Kapitel 27. Zend_Validate