1 <sect1 id="zend.uri.chapter">
2 <title>Zend_Uri</title>
4 <sect2 id="zend.uri.overview">
8 <code>Zend_Uri</code> jest komponentem, który pomaga w manipulowaniu i
9 sprawdzaniu poprawności adresem
10 <ulink url="http://www.w3.org/Addressing/">Uniform Resource Identifier</ulink>
11 (URI). Klasa <code>Zend_Uri</code> istnieje głownie aby obsłużyć inne
12 komponenty takie jak na przykład <code>Zend_Http_Client</code> ale także
13 jest użyteczna jako osobne narzędzie.
17 Adresy URI zawsze zaczynają się nazwą schematu zakończoną średnikiem.
18 Konstrukcje różnych schematów różnią się od siebie znacząco. Klasa
19 <code>Zend_Uri</code> zapewnia fabrykę, która zwracą swoją podklasę
20 specjalizującą się w danym schemacie. Podklasa będzie nazwana
21 <code>Zend_Uri_<scheme></code>, gdzie
22 <code><scheme></code> jest nazwą schematu zamienioną na małe litery
23 z pierwszą literą zamienioną na wielką. Wyjątkiem od tej reguły jest
24 schemat HTTPS, który także jest obsługiwany przez klasę
25 <code>Zend_Uri_Http</code>.
29 <sect2 id="zend.uri.creation">
30 <title>Tworzenie nowego URI</title>
33 <code>Zend_Uri</code> zbuduje nowy URI z szablonu jeśli do metody
34 <code>Zend_Uri::factory()</code> przekazana jest tylko nazwa schematu.
37 <example id="zend.uri.creation.example-1">
38 <title>Tworzenie nowego URI za pomocą <code>Zend_Uri::factory()</code></title>
40 <programlisting role="php"><![CDATA[
41 // Aby utworzyć URI z szablonu, przekaż tylko schemat.
42 $uri = Zend_Uri::factory('http');
44 // $uri jest instancją Zend_Uri_Http
50 Aby utworzyć nowy URI z szablonu, przekaż tylko nazwę schematu do metody
51 <code>Zend_Uri::factory()</code><footnote><para>Obecnie, Zend_Uri
52 obsługuje tylko schematy HTTP oraz HTTPS.</para></footnote>. Jeśli
53 przekazana jest nazwa nieobsługiwanego schematu, wyrzucony będzie
54 wyjątek <code>Zend_Uri_Exception</code>.
58 Jeśli schemat lub przekazany URI jest obsługiwany, metoda
59 <code>Zend_Uri::factory()</code> zwróci swoją podklasę, która specjalizuje
60 się w schemacie który ma zostać utworzony.
64 <sect2 id="zend.uri.manipulation">
65 <title>Manipulowanie istniejącym URI</title>
68 Aby manipulować istniejącym URI, przekaż cały URI do
69 <code>Zend_Uri::factory()</code>.
72 <example id="zend.uri.manipulation.example-1">
73 <title>Manipulowanie istniejącym URI za pomocą <code>Zend_Uri::factory()</code></title>
75 <programlisting role="php"><![CDATA[
76 // Aby manipulować istniejącym URI, przekaż go do metody fabryki.
77 $uri = Zend_Uri::factory('http://www.zend.com');
79 // $uri jest instancją Zend_Uri_Http
85 URI zostanie przetworzony i zostanie sprawdzona jego poprawność. Jeśli
86 okaże się, że jest niepoprawny, od razu zostanie wyrzucony wyjątek
87 <code>Zend_Uri_Exception</code>. W przeciwnym wypadku, metoda
88 <code>Zend_Uri::factory()</code> zwróci swoją podklasę specjalizującą
89 się w schemacie URI, którym chcemy manipulować.
93 <sect2 id="zend.uri.validation">
94 <title>Sprawdzanie poprawności URI</title>
97 Funkcja <code>Zend_Uri::check()</code> może być użyta jeśli potrzebne
98 jest tylko sprawdzenie poprawności istniejącego URI.
101 <example id="zend.uri.validation.example-1">
102 <title>Sprawdzanie poprawności URI za pomocą <code>Zend_Uri::check()</code></title>
104 <programlisting role="php"><![CDATA[
105 // Sprawdź czy podany URI ma poprawny format
106 $valid = Zend_Uri::check('http://uri.in.question');
108 // $valid ma wartość TRUE dla poprawnego URI, lub FALSE w przeciwnym wypadku.
114 <code>Zend_Uri::check()</code> zwraca wartość logiczną, co jest bardziej
115 wygodne niż używanie <code>Zend_Uri::factory()</code> i wyłapywanie
120 <sect2 id="zend.uri.instance-methods">
121 <title>Wspólne metody instancji</title>
124 Każda instancja podklasy <code>Zend_Uri</code> (np.
125 <code>Zend_Uri_Http</code>) ma kilka metod, ktore są użyteczne do pracy
126 z rożnego rodzaju URI.
129 <sect3 id="zend.uri.instance-methods.getscheme">
130 <title>Pobieranie schematu URI</title>
133 Nazwa schematu URI jest częścią URI, która znajduje się przed dwukropkiem. Na przykład
134 nazwą schematu adresu <code>http://www.zend.com</code> jest <code>http</code>.
137 <example id="zend.uri.instance-methods.getscheme.example-1">
138 <title>Pobieranie schematu z obiektu <code>Zend_Uri_*</code></title>
140 <programlisting role="php"><![CDATA[
141 $uri = Zend_Uri::factory('http://www.zend.com');
143 $scheme = $uri->getScheme(); // "http"
149 Metoda <code>getScheme()</code> zwraca tylko schemat z obiektu URI.
155 <sect3 id="zend.uri.instance-methods.geturi">
156 <title>Pobieranie całego URI</title>
158 <example id="zend.uri.instance-methods.geturi.example-1">
159 <title>Pobieranie całego URI z obiektu <code>Zend_Uri_*</code></title>
161 <programlisting role="php"><![CDATA[
162 $uri = Zend_Uri::factory('http://www.zend.com');
164 echo $uri->getUri(); // "http://www.zend.com"
170 Metoda <code>getUri()</code> zwraca reprezentację całego URI jako
175 <sect3 id="zend.uri.instance-methods.valid">
176 <title>Sprawdzanie poprawności URI</title>
179 <code>Zend_Uri::factory()</code> zawsze sprawdzi poprawność przekazanego
180 do niej URI i nie utworzy nowej instancji podklasy <code>Zend_Uri</code>
181 jeśli podany adres URI jest niepoprawny. Jakkolwiek, po tym jak zostanie
182 utworzona instancja podklasy <code>Zend_Uri</code> dla nowego URI lub
183 dla poprawnego istniejącego, możliwe jest to, że URI później może stać
184 się niepoprawny, po tym jak będziemy nim manipulować.
187 <example id="zend.uri.instance-methods.valid.example-1">
188 <title>Sprawdzanie poprawności obiektu <code>Zend_Uri_*</code></title>
190 <programlisting role="php"><![CDATA[
191 $uri = Zend_Uri::factory('http://www.zend.com');
193 $isValid = $uri->valid(); // TRUE
199 Metoda <code>valid()</code> zapewnia możliwość sprawdzenia czy obiekt
200 URI jest wciąż poprawny.