Zend_Uri
Ü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.
Eine neue URI erstellen
Zend_Uri erstellt eine neue URI von Grund auf,
wenn nur das Schema an Zend_Uri::factory() übergeben wurde.
Erstellen einer neuen URI mit Zend_Uri::factory()
Um eine neue URI von Grund auf zu erstellen, übergibt man nur das
Schema an Zend_Uri::factory()Zum Zeitpunkt des
Schreibens unterstützt Zend_Uri nur die Schemata
HTTP und HTTPS. 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.
Verändern einer vorhandenen URI
Um eine vorhandene URI zu verändern, übergibt man die komplette
URI an Zend_Uri::factory().
Verändern einer vorhandenen URI mit Zend_Uri::factory()
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.
URI Validierung
Die Zend_Uri::check() Methode kann verwendet werden, wenn nur
das Validieren einer vorhandenen URI benötigt wird.
URI Validierung mit Zend_Uri::check()
Zend_Uri::check() gibt einen Boolschen Wert zurück was bequemer
ist als Zend_Uri::factory() zu verwenden und die Exception zu
fangen.
"Unwise" Zeichen in URIs erlauben
Standardmäßig wird Zend_Uri die folgenden Zeichen nicht
akzepzieren: "{", "}", "|", "\", "^", "`". Diese Zeichen sind durch die
RFC als "unwise" definiert und deshalb ungültig; trotzdem,
akzeptieren viele Implementierungen diese Zeichen als gültig.
Zend_Uri kann so eingestellt werden, dass es diese "unwise"
Zeichen akzeptiert. Hierzu muss die Option 'allow_unwise' Option durch Verwendung
von Zend_Uri::setConfig() auf ein boolsches
TRUE gesetzt werden:
Spezielle Zeichen in URIs erlauben
true));
// Gibt 'true' zurück
$valid = Zend_Uri::check('http://example.com/?q=this|that');
// Setzt den Wert 'allow_unwise' auf das Standardmäßige FALSE zurück
Zend_Uri::setConfig(array('allow_unwise' => false));
]]>
Zend_Uri::setConfig() setzt Konfigurationsoptionen
global. Es wird, wie im obigen Beispiel, empfohlen die 'allow_unwise' Option auf
'FALSE' zurückzusetzen, solange man unwise Zeichen immer
global erlauben will.
Allgemeine Instanzmethoden
Jede Instanz 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 erhalten
Das Schema der URI ist der Teil der URI vor
dem Doppelpunkt. Zum Beispiel ist http das Schema von
http://www.zend.com.
Das Schema eines Zend_Uri_* Objektes erhalten
getScheme(); // "http"
]]>
Die getScheme() Instanzmethode gibt nur das Schema des
URI Objektes zurück.
Die komplette URI erhalten
Die komplette URI eines Zend_Uri_* Objektes erhalten
getUri(); // "http://www.zend.com"
]]>
Die getUri() Methode gibt den String zurück, der die
komplette URI repräsentiert.
Die URI validieren
Zend_Uri::factory() validiert immer jede übergebene
URI und wird keine Zend_Uri Unterklasse
instanzieren, 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.
Ein Zend_Uri_* Object validieren
valid(); // TRUE
]]>
Die valid() Instanzmethode ermöglicht es, das
URI Objekt auf Gültigkeit zu überprüfen.