Rozdział 26. Zend_Uri
Poprzedni |  | Następny

## Rozdział 26. Zend_Uri

## 26.1. Zend_Uri

### 26.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`.

### 26.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 26.1. Tworzenie nowego URI za pomocą `Zend_Uri::factory()`

    <?php

    require_once 'Zend/Uri.php';

    // 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()`[11]. 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.

### 26.1.3. Manipulowanie istniejącym URI

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

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

    <?php

    require_once 'Zend/Uri.php';

    // 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ć.

### 26.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 26.3. Sprawdzanie poprawności URI za pomocą `Zend_Uri::check()`

    <?php

    require_once 'Zend/Uri.php';

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

### 26.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.

#### 26.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 26.4. Pobieranie schematu z obiektu `Zend_Uri_*`

    <?php

    require_once 'Zend/Uri.php';

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

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

    ?>

Metoda `getScheme()` zwraca tylko schemat z obiektu URI.

#### 26.1.5.2. Pobieranie całego URI

Przykład 26.5. Pobieranie całego URI z obiektu `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()` zwraca reprezentację całego URI jako łańcuch znaków.

#### 26.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 26.6. Sprawdzanie poprawności obiektu `Zend_Uri_*`

    <?php

    require_once 'Zend/Uri.php';

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

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

    ?>

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

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

Poprzedni |  | Następny
25.5. Teoria | Spis treści | Rozdział 27. Zend_Validate