Table of Contents
      Zend_Uri este o componentă care ajută la manipularea şi
      validarea Identificatorilor uniformi de
      resurse (URI-uri). Zend_Uri există în primul rând pentru a servi
      alte componente cum ar fi Zend_Http_Client, dar este
      utilă şi ca o componentă de sine stătătoare.
    
      URI-urile încep întotdeauna cu schema, urmată de caracterul două puncte. Construcţia diverselor
      şi multiplelor scheme diferă semnificativ.  Clasa
      Zend_Uri dispune de o fabrică (factory) care creează o subclasă a sa
      specializată pentru fiecare schemă.  Subclasa se va numi
      Zend_Uri_<schemă>, unde
      <schemă> este schema scrisă cu litere mici şi prima literă majusculă.
      O excepţie de la această regulă este HTTPS, care e de asemenea gestionată de 
      Zend_Uri_Http.
    
      Zend_Uri va construi un nou URI de la zero doar dacă pasaţi o schemă
      metodei Zend_Uri::factory().
    
Example 32.1. Crearea unui nou URI cu Zend_Uri::factory()
<?php
require_once 'Zend/Uri.php';
// Pentru a crea un nou URI de la zero, pasaţi doar schema.
$uri = Zend_Uri::factory('http');
// $uri instanceof Zend_Uri_Http
 
?>
      Pentru a crea un nou identificator de resursă (URI) de la zero, pasaţi metodei
      Zend_Uri::factory() doar schema. [13] .
      Dacă se pasează o schemă nesuportată, va fi aruncată o excepţie Zend_Uri_Exception.
    
      Dacă schema sau identificatorul de resursă pasat este suportat,
      Zend_Uri::factory() va întoarce o subclasă a ei care este
      specializată în schema care trebuie creată.
    
      Pentru a manipula un identificator de resursă existent, pasaţi întregul identificator (URI) metodei
      Zend_Uri::factory(). 
    
Example 32.2. Manipularea unui identificator de resursă (UR) existent cu Zend_Uri::factory()
<?php
require_once 'Zend/Uri.php';
// Pentru a manipula un URI existent, pasaţi-l ca parametru.
$uri = Zend_Uri::factory('http://www.zend.com');
// $uri instanceof Zend_Uri_Http
 
?>
      Identificatorul de resursă va fi analizat şi validat. Dacă e găsit invalid, va fi aruncată o excepţie
      Zend_Uri_Exception imediat. În caz contrar,
      Zend_Uri::factory() va întoarce o subclasă a sa care este
      specializată în schema care urmează a fi manipulată.
    
      Funcţia Zend_Uri::check() poate fi utilizată doar dacă validarea
      unui URI existent este necesară într-un moment anume.
    
Example 32.3. Validarea unui URI cu Zend_Uri::check()
<?php
require_once 'Zend/Uri.php';
// Validează dacă un URI dat este bine format
$valid = Zend_Uri::check('http://uri.de.validat');
// $valid este TRUE pentru un URI valid, sau FALSE în caz contrar.
 
?>
      Zend_Uri::check() întoarce rezultatul operaţiei ca tip boolean,
      lucru care se poate dovedi mai convenabil decât folosirea metodei Zend_Uri::factory()
      şi prinderea excepţiei.
    
      Fiecare instanţă a unei subclase Zend_Uri (ex:
      Zend_Uri_Http) are mai multe metode de instanţiere care se dovedesc
      a fi utile în lucrul cu orice tip de URI.
    
        Schema unui URI este partea acelui URI care precedă caracterul două puncte.  De exemplu,
        schema identificatorului http://www.zend.com este http.
      
Example 32.4. Obţinerea schemei dintr-un obiect Zend_Uri_*
<?php
require_once 'Zend/Uri.php';
$uri = Zend_Uri::factory('http://www.zend.com');
$scheme = $uri->getScheme();  // "http"
 
?>
        Metoda getScheme() întoarce doar partea din URI care conţine schema
        obiectului URI.
      
Example 32.5. Obţinerea întregului identificator dintr-un obiect Zend_Uri_*
<?php
require_once 'Zend/Uri.php';
$uri = Zend_Uri::factory('http://www.zend.com');
echo $uri->getUri();  // "http://www.zend.com"
 
?>
        Metoda getUri() întoarce textul reprezentând întregul
        URI.
      
        Zend_Uri::factory() va valida întotdeauna orice URI pasat ei
        şi nu va crea o nouă instanţă de subclasă Zend_Uri
        dacă identificatorul pasat nu este valid.  Cu toate acestea, după ce 
        subclasa Zend_Uri este instanţiată pentru un nou URI sau unul
        existent şi valid, e posibil ca identificatorul să devină ulterior invalid datorită
        manipulării părţilor sale componente.
      
Example 32.6. Validarea unui obiect Zend_Uri_*
<?php
require_once 'Zend/Uri.php';
$uri = Zend_Uri::factory('http://www.zend.com');
$isValid = $uri->valid();  // TRUE
 
?>
        Metoda valid() oferă o cale de a verifica dacă un obiect URI
        este încă valid.