Rozdział 46. Zend_Uri

Spis treści

46.1. Zend_Uri
46.1.1. Wstęp
46.1.2. Tworzenie nowego URI
46.1.3. Manipulowanie istniejącym URI
46.1.4. Sprawdzanie poprawności URI
46.1.5. Wspólne metody instancji
46.1.5.1. Pobieranie schematu URI
46.1.5.2. Pobieranie całego URI
46.1.5.3. Sprawdzanie poprawności URI

46.1. Zend_Uri

46.1.1. Wstęp

Zend_Uri jest komponentem, który pomaga w manipulowaniu i sprawdzaniu poprawności adresem Uniform Resource Identifier (URI). Klasa Zend_Uri istnieje głownie aby obsłużyć inne komponenty takie jak na przykład Zend_Http_Client ale także jest użyteczna jako osobne narzędzie.

Adresy URI zawsze zaczynają się nazwą schematu zakończoną średnikiem. Konstrukcje różnych schematów różnią się od siebie znacząco. Klasa Zend_Uri zapewnia fabrykę, która zwracą swoją podklasę specjalizującą się w danym schemacie. Podklasa będzie nazwana Zend_Uri_<scheme>, gdzie <scheme> jest nazwą schematu zamienioną na małe litery z pierwszą literą zamienioną na wielką. Wyjątkiem od tej reguły jest schemat HTTPS, który także jest obsługiwany przez klasę Zend_Uri_Http.

46.1.2. Tworzenie nowego URI

Zend_Uri zbuduje nowy URI z szablonu jeśli do metody Zend_Uri::factory() przekazana jest tylko nazwa schematu.

Przykład 46.1. Tworzenie nowego URI za pomocą Zend_Uri::factory()

// Aby utworzyć URI z szablonu, przekaż tylko schemat.
$uri = Zend_Uri::factory('http');

// $uri jest instancją Zend_Uri_Http

        

Aby utworzyć nowy URI z szablonu, przekaż tylko nazwę schematu do metody Zend_Uri::factory()[23]. Jeśli przekazana jest nazwa nieobsługiwanego schematu, wyrzucony będzie wyjątek Zend_Uri_Exception.

Jeśli schemat lub przekazany URI jest obsługiwany, metoda Zend_Uri::factory() zwróci swoją podklasę, która specjalizuje się w schemacie który ma zostać utworzony.

46.1.3. Manipulowanie istniejącym URI

Aby manipulować istniejącym URI, przekaż cały URI do Zend_Uri::factory().

Przykład 46.2. Manipulowanie istniejącym URI za pomocą Zend_Uri::factory()

// Aby manipulować istniejącym URI, przekaż go do metody fabryki.
$uri = Zend_Uri::factory('http://www.zend.com');

// $uri jest instancją Zend_Uri_Http

        

URI zostanie przetworzony i zostanie sprawdzona jego poprawność. Jeśli okaże się, że jest niepoprawny, od razu zostanie wyrzucony wyjątek Zend_Uri_Exception. W przeciwnym wypadku, metoda Zend_Uri::factory() zwróci swoją podklasę specjalizującą się w schemacie URI, którym chcemy manipulować.

46.1.4. Sprawdzanie poprawności URI

Funkcja Zend_Uri::check() może być użyta jeśli potrzebne jest tylko sprawdzenie poprawności istniejącego URI.

Przykład 46.3. Sprawdzanie poprawności URI za pomocą Zend_Uri::check()

// Sprawdź czy podany URI ma poprawny format
$valid = Zend_Uri::check('http://uri.in.question');

// $valid ma wartość TRUE dla poprawnego URI, lub FALSE w przeciwnym wypadku.

    

Zend_Uri::check() zwraca wartość logiczną, co jest bardziej wygodne niż używanie Zend_Uri::factory() i wyłapywanie wyjątku.

46.1.5. Wspólne metody instancji

Każda instancja podklasy Zend_Uri (np. Zend_Uri_Http) ma kilka metod, ktore są użyteczne do pracy z rożnego rodzaju URI.

46.1.5.1. Pobieranie schematu URI

Nazwa schematu URI jest częścią URI, która znajduje się przed dwukropkiem. Na przykład nazwą schematu adresu http://www.zend.com jest http.

Przykład 46.4. Pobieranie schematu z obiektu Zend_Uri_*

$uri = Zend_Uri::factory('http://www.zend.com');

$scheme = $uri->getScheme();  // "http"

        

Metoda getScheme() zwraca tylko schemat z obiektu URI.

46.1.5.2. Pobieranie całego URI

Przykład 46.5. Pobieranie całego URI z obiektu Zend_Uri_*

$uri = Zend_Uri::factory('http://www.zend.com');

echo $uri->getUri();  // "http://www.zend.com"

          

Metoda getUri() zwraca reprezentację całego URI jako łańcuch znaków.

46.1.5.3. Sprawdzanie poprawności URI

Zend_Uri::factory() zawsze sprawdzi poprawność przekazanego do niej URI i nie utworzy nowej instancji podklasy Zend_Uri jeśli podany adres URI jest niepoprawny. Jakkolwiek, po tym jak zostanie utworzona instancja podklasy Zend_Uri dla nowego URI lub dla poprawnego istniejącego, możliwe jest to, że URI później może stać się niepoprawny, po tym jak będziemy nim manipulować.

Przykład 46.6. Sprawdzanie poprawności obiektu Zend_Uri_*

$uri = Zend_Uri::factory('http://www.zend.com');

$isValid = $uri->valid();  // TRUE

          

Metoda valid() zapewnia możliwość sprawdzenia czy obiekt URI jest wciąż poprawny.



[23] Obecnie, Zend_Uri obsługuje tylko schematy HTTP oraz HTTPS.