Aby zrozumieć, co robi router, musisz najpierw zrozumieć, czym jest silnik przepisywania. Z artykułu w Wikipedii (moje podkreślenie):
Mechanizm przepisywania to oprogramowanie, które modyfikuje wygląd adresu URL (przepisywanie adresu URL). Przepisane adresy URL (czasami nazywane krótkimi, fantazyjnymi lub przyjaznymi dla wyszukiwarek - SEF) służą do dostarczania krótszych i bardziej odpowiednich linków do stron internetowych. Technika ta zapewnia pewien stopień oddzielenia plików używanych do generowania strony internetowej i adresu URL prezentowanego światu .
Gdy używany jest silnik przepisywania, nie ma korelacji 1: 1 między adresem URL a skryptem PHP. Przykład z tego samego artykułu:
http://example.com/wiki/index.php?title=Page_title
może być przepisany jako:
http://example.com/wiki/Page_title
Korzystanie z tej techniki ma wiele zalet . Ponieważ PHP jest zwykle ściśle sprzężone z Apache, najczęściej stosowanym silnikiem przepisywania jest mod_rewrite Apache .
Jeśli chcesz przepisać adresy URL, potrzebujesz pewnego rodzaju routingu, ponieważ routing to proces pobierania adresu URL, dzielenia go na komponenty i decydowania, jaki skrypt ma wywołać. Strona dokumentacji standardowego routera Zend Framework wyjaśnia ten proces jako:
Routing to proces pobierania punktu końcowego URI (tej części URI, który pojawia się po podstawowym adresie URL) i rozkładania go na parametry w celu ustalenia, który moduł, kontroler i działanie tego kontrolera powinny otrzymać żądanie.
Większość frameworków PHP opiera się obecnie na wzorcu MVC , a na frameworku MVC proces przebiega mniej więcej tak : *
- Przeglądarka wskazuje adres URL,
- Serwer internetowy przechwytuje żądanie i przekazuje je do wspólnego punktu wejścia, zwykle
index.php
skryptu,
index.php
pobiera adres URL i rozpoczyna proces routingu.
- Adres URL jest rozkładany na parametry, gdzie pierwszy to kontroler, drugi to metoda akcji, a pozostałe są uważane za parametry dynamiczne,
- Jeśli istnieje klasa kontrolera pasująca do pierwszego parametru, tworzony jest obiekt kontrolera,
- Wywoływana jest metoda akcji, która zwykle jest funkcją obiektu kontrolera, a jej zwrot jest faktycznie zwracany do przeglądarki.
Dopasowanie parametrów do kontrolerów i metod zwykle wykorzystuje dopasowanie za pomocą wyrażeń regularnych, aby móc obsługiwać złożone i dynamiczne wzorce routingu, znane jako trasy. Dobre przykłady tras można znaleźć na stronie dokumentacji routingu URI CodeIgniter :
$ route ['dzienniki'] = "blogi";
$ route ['blog / joe'] = "blogs / users / 34";
$ route ['product / (: any)'] = "catalog / product_lookup";
$ route ['product / (: num)'] = "catalog / product_lookup_by_id / $ 1";
$route
Tablica posiada wzory jak klucze i wynikające z działania jako wartości w controller/action_method/dynamic_parameter
pliku PDF.
* To nie jest zamierzone jako opis procesu kanonicznego, tylko uproszczone wyjaśnienie.