Introduction to Zend Framework

 Learning Zend Framework

appendix

 Zend Framework Reference


  •  Zend_Gdata
  •  Zend_Http
  •  Zend_InfoCard
  •  Zend_Json
  •  Zend_Layout
  •  Zend_Ldap
  •  Zend_Loader
  •  Zend_Locale
  •  Zend_Log
  •  Zend_Mail
  •  Zend_Markup
  •  Zend_Measure
  •  Zend_Memory
  •  Zend_Mime
  •  Zend_Navigation
  •  Zend_Oauth
  •  Zend_OpenId
  •  Zend_Paginator
  •  Zend_Pdf
  •  Zend_ProgressBar
  •  Zend_Queue
  •  Zend_Reflection
  •  Zend_Registry
  •  Zend_Rest

  •  Zend_Search_Lucene
  •  Zend_Serializer
  •  Zend_Server
  •  Zend_Service
  •  Zend_Session
  •  Zend_Soap
  •  Zend_Tag
  •  Zend_Test
  •  Zend_Text
  •  Zend_TimeSync
  •  Zend_Tool
  •  Zend_Tool_Framework
  •  Zend_Tool_Project
  •  Zend_Translate
  •  Zend_Uri
  •  Zend_Validate
  •  Zend_Version
  •  Zend_View
  •  Zend_Wildfire
  •  Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 96.1% Update 2010-11-28 - Revision 23448 - Version ZF 1.11.x

    Chapter 74. Zend_Uri

    74.1. Zend_Uri

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

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

    Example 74.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()[31]. Wenn ein nicht unterstütztes Schema übergeben, und keine Schema-spezifische Klasse angegeben wird, dann 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.

    74.1.2.1. Erstellen neuer eigener URI Klassen

    Beginnend mit Zend Framework 1.10.5 kann man eine eigene Klasse spezifizieren welche, wenn Sie als zweiter Parameter der Methode Zend_Uri::factory() angegeben wird, verwendet wird wenn man eine Zend_Uri Instanz erstellt. Das erlaubt es Zend_Uri zu erweitern und eigene URI Klassen zu erstellen, und neue URI Objekte zu instanzieren basierend auf den eigenen Klassen.

    Der zweite Parameter welcher an Zend_Uri::factory() übergeben wird muss ein String sein mit dem Namen der Klasse welche Zend_Uri erweitert. Diese Klasse muss entweder bereits geladen sein, oder geladen werden können indem Zend_Loader::loadClass() verwendet wird - deshalb muss es den Konventionen für Zend Framework Klassen und Dateien folgen und muss im include_path sein.

    Example 74.2. Erstellen eine URI durch Verwendung einer eigenen Klasse

    // Erstellt eine neue 'ftp' URI basierend auf einer eigenen Klasse
    $ftpUri Zend_Uri::factory(
        
    'ftp://user@ftp.example.com/path/file',
        
    'MyLibrary_Uri_Ftp'
    );

    // $ftpUri ist eine Instanz von MyLibrary_Uri_Ftp, welche eine Unterklasse von Zend_Uri ist

    74.1.3. Verändern einer vorhandenen URI

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

    Example 74.3. Verändern einer vorhandenen URI mit Zend_Uri::factory()

    // Um eine vorhandene URI zu verändern, übergibt man diese
    $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.

    74.1.4. URI Validierung

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

    Example 74.4. URI Validierung mit Zend_Uri::check()

    // Überprüfe, ob eine übergebene 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 einen Boolschen Wert zurück was bequemer ist als Zend_Uri::factory() zu verwenden und die Exception zu fangen.

    74.1.4.1. "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:

    Example 74.5. 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] Note

    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.

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

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

    Example 74.6. 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.

    74.1.5.2. Die komplette URI erhalten

    Example 74.7. 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.

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

    Example 74.8. 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.



    [31] Zum Zeitpunkt des Schreibens bietet Zend_Uri nur eingebaute Unterstützung für die Schemata HTTP und HTTPS

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...