![]() |
![]() |
![]()
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: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Można ew. tworzyć nową klasę Request, która w konstruktorze stworzy instancję Routera i pobierze od niego rozszyfrowane dane z PATH_INFO. Jak ktoś będzie chcial stworzyć nowy url, to albo pobierze sobie Router (np. $request->getRouter(); albo zmapuje się funkcję generowania URL-a do requesta (trochę mniej mi się to podoba).
W takiej sytuacji możemy sobie spokojnie wymienić Router i zmienia się zarówno sposób kodowania, jak i dekodowania, ale możemy także zmienic klasę Request. A w Phiendzie wystarczyloby zostawić BasicHttpRequest w phiend.context a RoutedHttpRequest wraz z Routerem wrzucić do phiend.mvc. I tak BasicHttpContext dostaje iHttpRequest w kostruktorze, więc nie ma problemu ze znajdowaniem się tych klas w różnych pakietach. (i tak instancja BasicHttpContext będzie tworzona najprawdopodobniej we kontrolerze, który jest częścią phiend.mvc). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 22:18 |