![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hej.
Wiem, że tego typu tematy już się pojawiały, ale większość z nich jest pozamykanych, a wiele wypowiedzi, które w nich się znajdują mają charakter głównie teoretyczny i chyba nie ma w nich informacji, o którą mi chodzi ![]() Mam następującą sytuację: Przykładowy adres: www.strona.com/index.php/modul/metoda/parametr1/parametr2 W tym przypadku jest ładowana klasa modul (jest ona odpowiedzialna za uruchamianie odpowiednich metod, które pobierają dane z modeli). Jest też uruchamiana metoda o nazwie metoda, a jej parametry, to: parametr1 i parametr2. Dynamiczne załadowanie klasy i uruchomienie metody, to żaden problem. Sprawa dotyczy parametrów metody. W omawianej aplikacji jest zwracana tablica z parametrami aktualnej metody. Dla powyższego przykładu będzie ona wyglądać następująco:
Te parametry muszę wstawić do bieżącej metody. Każda z metod może mieć zmienną liczbę parametrów i różne typy parametrów. Można nie ruszać tablicy z parametrami i zrobić w następujący sposób:
W takim przypadku w każdym module każda metoda będzie musiała mieć jeden parametr będący tablicą. Nie bardzo mi się to podoba... Chciałbym, żeby każda metoda w każdym module mogła mieć dowolną liczbę różnych parametrów. Widziałem taki numer we frameworku CodeIgniter, ale nie przeglądałem go zbyt dogłębnie (jedynie powierzchownie) i nie wiem, gdzie dokładnie jest zawarty kod, który robi to, o co mi chodzi. Mam na myśli następujący wpis w user guide do tego frameworka: http://codeigniter.com/user_guide/general/...html#passinguri Być może ktoś z Was wie, jak to sensownie rozwiązać lub może nakierować mnie na miejsce w CodeIgniterze, gdzie odbywa się interesujący mnie proces. Jestem też ciekaw, jakie Wy stosujecie praktyki związane z przekazywaniem parametrów metod. Pozdrawiam ![]() Ten post edytował Speedy 20.06.2007, 23:09:21 -------------------- Sygnatura niezgodna z regulaminem.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ja podpowiem Ci ogólnie.
Zacząłbym od implementacji obiektu kontekstu. Ten obiekt będzie kontenerem parametrów przekazywanych do akcji, za którą odpowiadają u Ciebie chyba metody. Jak teraz logicznie przetłumaczyć dane z URL na parametry? Sensowne jest stworzenie pewnej mapy, która elementowi żądania HTTP przyporządkuje nazwę parametru akcji. U Ciebie pojawia się problem, gdyż Dispatcher ogranicza swoją rolę do odczytania dwóch pierwszych elementów z URL. Warto by pomyśleć właśnie nad bardziej przyjazną translacją URL na parametry. Nie podoba mi się zarówno pomysł dynamicznego wywoływania metod jak i reprezentacji akcji przez metody. Zawsze akcja była dla mnie obiektem implementującym wzorzec Command i wydawało mi się to logiczne. Widocznie tak Ci jest wygodniej, ale przez to powstają ogromne klasy, których 80% jest nieużywane podczas żądania. -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.08.2025 - 23:51 |