|
|
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.
Example #1 Erstellen einer neuen URI mit Zend_Uri::factory()
// 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()[1] . 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().
Example #2 Verändern einer vorhandenen URI mit Zend_Uri::factory()
// 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.
Example #3 URI Validierung mit Zend_Uri::check()
// Ü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.
Standardmäßig wird Zend_Uri die folgenden Zeichen nicht akzepzieren, da Sie durch die
RFC als "unwise" definiert und deshalb ungültig sind: "{", "}", "|", "\", "^",
"`". Trotzdem, akzeptieren viele Implementierungen diese Zeichen als Gültig.
Zend_Uri kann so eingestellt werden das es diese "unwise" Zeichen akzeptiert indem die 'allow_unwise' Option auf ein boolsches TRUE gesetzt wird, durch Verwendung der Zend_Uri::setConfig() Methode:
Example #4 Spezielle Zeichen in URIs erlauben
// Enthält das '|' Symbol
// Normal würde das false zurückgeben:
$valid = Zend_Uri::check('http://example.com/?q=this|that');
// Trotzdem kann man diese "unwise" Zeichen erlauben
Zend_Uri::setConfig(array('allow_unwise' => 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));
Note:
Zend_Uri::setConfig()setzt Konfigurationsoptionen global. Es wird empfohlen die 'allow_unwise' Option auf 'false' zurückzusetzen wie im obigen Beispiel, solange man unwise Zeichen immer global erlauben will.
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.
Example #5 Das Schema eines Zend_Uri_* Objektes erhalten
$uri = Zend_Uri::factory('http://www.zend.com');
$scheme = $uri->getScheme(); // "http"
Die getScheme() Instanzmethode gibt nur das Schema des URI Objektes zurück.
Example #6 Die komplette URI eines Zend_Uri_* Objektes erhalten
$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.
Example #7 Ein Zend_Uri_* Object validieren
$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.
|
|
Copyright © 2005-2011 Zend Technologies Inc (compiled by mikaelkael with ZFDocumentor - SVN 18616).

