Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Parametry metod - przekazywanie
Speedy
post 20.06.2007, 23:08:26
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 smile.gif.

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:

  1. <?php
  2. $parameters = array('parametr1','parametr2');
  3. ?>


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:

  1. <?php
  2.  
  3. class modul
  4. {
  5.  
  6. public function metoda($tablica)
  7. {
  8. print $tablica[0];
  9. print $tablica[1];
  10. }
  11.  
  12. }
  13.  
  14. ?>


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 smile.gif.

Ten post edytował Speedy 20.06.2007, 23:09:21


--------------------
Sygnatura niezgodna z regulaminem.
Go to the top of the page
+Quote Post
Ludvik
post 20.06.2007, 23:32:54
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.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.08.2025 - 23:51