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.