![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
Router to obiekt który rozbija żądanie i wyciąga z niego nazwę żądanej akcji, parametry itp. Router jest także generatorem linków (np nice urls)
HttpRequest jest obiektem, bedącym otoczką dla żądania http. I teraz moje pytania: 1. Czy HttpRequest powinien by jednocześnie routerem: Kod --- klient --- czy router powinien byc oddzielny analizowac dane z httpRequest i na tej podstawie stwierdzac, którą ma akcję uruchomic:--- HttpRequest i Router w jednym --- --- kontroler - pobiera nazwe akcji z Routera --- Kod --- klient --- ?--- HttpRequest --- --- Router - analizuje HttpRequest sprawdzająca jaka akcja ma byc uruchomiona --- --- Kontroler - pobiera z routera nazwe akcji --- 2. Jeżeli ta pierwsza opcja to gdzie tu powinien by generator linków? Przecież nie za bardzo pasuje on do HttpRequest |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Co do dostępu do routera (znowu mówię w kategoriach phiend2):
Jeżeli jest dostęp z akcji, to również z template. Można np. przekazać do smarty. Natomiast request przekazywany jest do akcji jako parametr - dokładnie przekazywany jest IHttpContext, i wystarczy zrobić $context->getRequest(). @Vengeance: Ja się martwię tym, że request musi rozbijać wg PATH_INFO, a router łączyć slashami. A jeżeli ktoś weźmie inny router? Nagle mu się rozjedzie sposób tworzenia URLi ze sposobem dekodownia URLi. Więc wolałbym trzymać obie te funkcje tylko w routerze. Tylko że jak pokazał matid, to rodzi pewne problemy (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) . @aleksander: Jeżeli router będzie rozszerzał requesta, to będę miał przy moim podziale na pakiety lekkie zamieszanie. Bo request nie potrzebuje MVC i może być teoretycznie używany bez tego. A router już jest częścią MVC, bo na wyjściu daje nazwy akcji. edit: a gdyby tak dodać do routera metodę getParam($request, $paramName) ? Router już będzie wiedział, jak co wyciągnąć z requesta, a w ten sposób request nie musi nic analizować i przetwarzać. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 19:32 |