Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [funkcje i metody] Wygoda użytkowania, Przekazywanie parametrów - sposoby
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Witam.
Pisząc swój własny framework już kilka razy spotykałem się z przekazywaniem dużej ilość argumentów do metod różnych klas.
Zaimplementowanie wygodnego sposobu specjalnego problemu mi nie stwarzało. Do czasu.
Obecnie zaprojektowana metoda klasy modelu artykułów, która ma za zadanie pobierać je z bazy, ma w założeniu ich całkiem pokaźną ilość.
Chciałbym żeby argumenty do niej przekazywane były w taki sposób aby ktoś komu przykładowo zlecę jakąś modyfikację nie miał problemu ze zrozumieniem konfiguracji zachowania tej metody. Więc tutaj powstaje pytanie. Jak przekazać parametry. Dotychczas rozważyłem napisanie klasy
która by składowała tą konfigurację. Uznałem rozwiązanie za w miarę dobre gdyż byłoby ono bardzo elastyczne. Pomysł odpadł jednak względu na dużą dozę skomplikowania. Podrzućcie mi proszę jakieś pomysły.
Pozdrawiam.

Ten post edytował orglee 17.09.2008, 19:11:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




1) Jeżeli metoda ma tylko pare parametrów obowiązkowych to najlepiej zapodać je jako pierwsze a reszte nieobowiązkowych jako ostatnie parametry z domyslnymi wartosciami.
2) Jeżeli metoda ma bardzo dużo parametrów lepiej składować je w jednej tablicy albo w zmiennych obiektu.
np
Kod
//20 parametrow
$obj->par1=0;
$obj->par2=0;
$obj->par3=0; itd..
$obj->metoda();


--------------------
Go to the top of the page
+Quote Post
starach
post
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Niestety metoda nie ma w ogóle opcjonalnych parametrów.
Ehh chyba w takim razie pozostaje mi obiekt.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Dzizez, a na co ci tyle parametrow? Mozesz je pokazac?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
starach
post
Post #5





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


SQL LIMIT 2 parametry
Daty od / do 2 parametry
Identyfikator(y) 1 parametr
Fraz(a/y) w tytule / treści 2 parametry
Według kategorii 1 parametr
Według autora 1 parametr

I co z rozbudową jeśli zajdzie potrzeba dodania kolejnej możliwości filtrowania.
Go to the top of the page
+Quote Post
Łukasz O.
post
Post #6





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


  1. <?php
  2. class Example{
  3.    
  4.    function lotsOfParams(Array $params){
  5.        $default_params = array(
  6.            'par1'=>1,
  7.            'par2'=>2,
  8.            'par3'=>3,
  9.            'par4'=>4,
  10.        );
  11.        
  12.        $params = array_merge($default_params, $params);
  13.        
  14.        [...]
  15.    }
  16.    
  17.    [...]
  18. }
  19.  
  20. $example = new Example;
  21. $example->lotsOfParams(array('par2'=>'ala'));
  22. ?>


--------------------
"Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Uzyj sposobu @wookieb, ja podobnie buduje kryteria wyszukiwania obiektow i sprawdza sie bardzo dobze, i moze byc dowolnie rozbudowane.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
starach
post
Post #8





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Tak właśnie zrobię tylko dodam do klasy składującej settery i gettery.
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: 21.08.2025 - 03:51