starach
17.09.2008, 19:08:07
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.
wookieb
17.09.2008, 21:54:09
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();
starach
17.09.2008, 21:57:36
Niestety metoda nie ma w ogóle opcjonalnych parametrów.
Ehh chyba w takim razie pozostaje mi obiekt.
dr_bonzo
17.09.2008, 23:13:57
Dzizez, a na co ci tyle parametrow? Mozesz je pokazac?
starach
17.09.2008, 23:51:40
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.
Łukasz O.
17.09.2008, 23:59:12
<?php
class Example{
function lotsOfParams
(Array $params){ 'par1'=>1,
'par2'=>2,
'par3'=>3,
'par4'=>4,
);
[...]
}
[...]
}
$example = new Example;
$example->lotsOfParams(array('par2'=>'ala')); ?>
dr_bonzo
18.09.2008, 00:13:39
Uzyj sposobu @wookieb, ja podobnie buduje kryteria wyszukiwania obiektow i sprawdza sie bardzo dobze, i moze byc dowolnie rozbudowane.
starach
18.09.2008, 00:47:09
Tak właśnie zrobię tylko dodam do klasy składującej settery i gettery.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.