Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [funkcje i metody] Wygoda użytkowania
Forum PHP.pl > Forum > PHP
starach
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
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
Niestety metoda nie ma w ogóle opcjonalnych parametrów.
Ehh chyba w takim razie pozostaje mi obiekt.
dr_bonzo
Dzizez, a na co ci tyle parametrow? Mozesz je pokazac?
starach
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.
  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. ?>
dr_bonzo
Uzyj sposobu @wookieb, ja podobnie buduje kryteria wyszukiwania obiektow i sprawdza sie bardzo dobze, i moze byc dowolnie rozbudowane.
starach
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.