Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obsługa wielu parametrów metod w PHP - użyteczna klasa Params, Bardzo prosta ale użyteczna klasa ułatwiająca życie programisty PHP.
implico
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.11.2012
Skąd: Kraków

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


Witajcie ponownie!

Tym razem, w ramach rozbudowy firmowego bloga, chcielibyśmy podzielić się bardzo prostą, ale równie użyteczną klasą pozwalającą na wygodną obsługę parametrów funkcji, które zanadto się "rozrosły".

Przykładowo, przypuśćmy że mamy taką oto funkcję/metodę:

  1. function load(address, async, useCache = false, debug = false, user = NULL, timeout = 0)
  2. {
  3. ...
  4. }


Aby ją wywołać, zamierzając zmienić np. tylko jeden domyślny parametr timeout, musimy przebrnąć przez wszystkie parametry:
  1. load('http://www.implico.pl/', true, false, false, NULL, 100);


Prosiłoby się użycie rozwiązania znanego z JavaScript, gdzie wystarczy przekazać jako jedyny parametr odpowiedni obiekt.

Z pomocą przychodzi nasz klasa Params. Dzięki niej wywołanie ma postać:
  1. load(new Params( array('address' => 'http://www.implico.pl/', 'async' => true, 'timeout' => 100) ));


Więcej o klasie i jej użyciu tutaj:
http://www.implico.pl/klasa_params_wygodna...od_w_php,8.html


P.S. Jeśli istnieje już podobne, być może lepsze rozwiązanie - dajcie znać.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mstraczkowski
post
Post #2





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


Moim zdaniem już samo pisanie tak wieloparametrowych funkcji/metod jest złą praktyką

A tworzenie "hooków", aby sobie to ułatwić to już całkiem herezje

Jeśli funkcja zaczyna posiadać sporą ilość parametrów to pierwszy sygnał, aby zadać sobie pytanie czy to nie jest odpowiedni moment, aby utworzyć klasę zamiast pisać kolejne i kolejne parametry .

Takie wieloparametrowe funkcje w większości (nie zawsze) są już tak rozbudowane, że spokojnie mogą stać się jakimś osobnym libem

A jeżeli już to zazwyczaj projektuje się funkcje/metody w taki sposób, aby móc łatwo zarządzać ich parametrami

Przykładowo dlaczego flagi true/false są parametrami przed integerem który na pewno będzie używany częściej niż wspomniane flagi, które z kolei w 90% mogą mieć wartość domyślną ?

Ten post edytował mstraczkowski 13.02.2013, 03:47:05
Go to the top of the page
+Quote Post

Posty w temacie
- implico   Obsługa wielu parametrów metod w PHP - użyteczna klasa Params   6.02.2013, 06:58:32
- - hind   w czym te rozwiązanie jest lepsze od ValueObject l...   6.02.2013, 07:34:50
- - implico   Sądzę że zgrabniej i szybciej jest zapisać konstru...   6.02.2013, 10:05:03
- - !*!   Takie coś też zapewni automatyczną zmianę parametr...   6.02.2013, 10:23:41
- - nospor   Ale co tu oceniać? Dwie metody na krzyz: set i get...   6.02.2013, 10:48:30
- - pyro   Moim zdaniem cudowanie na siłę. Poczytajcie o zasa...   6.02.2013, 11:58:50
- - nospor   @pyro bo ja nie zakładałem, że coś jest wymagane. ...   6.02.2013, 12:55:52
|- - pyro   Cytat(nospor @ 6.02.2013, 12:55:52 ) ...   6.02.2013, 13:07:50
- - implico   @*!*: takie coś wcale nie zapewni żadnej autom...   6.02.2013, 13:10:24
- - nospor   Cytat@nosporku, sama konstrukcja i pojęcie "f...   6.02.2013, 13:14:13
|- - pyro   Cytat(nospor @ 6.02.2013, 13:12:34 ) ...   6.02.2013, 13:16:08
- - implico   @pyro: Niestety, chyba nie do końca rozumiesz ideę...   6.02.2013, 13:17:56
- - pyro   Może gdzieś popełniłem błąd, bo nie jestem u siebi...   6.02.2013, 13:33:14
- - ano   Czemu nie po prostu: [PHP] pobierz, plaintext func...   6.02.2013, 18:02:19
- - viking   Poza tym można też po prostu http://php.net/manual...   6.02.2013, 18:33:05
- - mstraczkowski   Moim zdaniem już samo pisanie tak wieloparametrowy...   13.02.2013, 03:27:16
- - hind   @mstraczkowski: mówisz o pisaniu klasy, ale co w p...   13.02.2013, 08:46:16
|- - pyro   Cytat(hind @ 13.02.2013, 08:46:16 ) @...   13.02.2013, 08:56:17
- - hind   zawsze można potem użyć kilkunastu setterów, ale z...   13.02.2013, 10:17:33
|- - pyro   Cytat(hind @ 13.02.2013, 10:17:33 ) z...   15.02.2013, 09:40:29
- - mstraczkowski   Konstruktor nie służy do ustawiania nie wiadomo ja...   13.02.2013, 12:19:07
- - ano   ...Lub użyć wzorca stworzonego do rozwiązywania ta...   14.02.2013, 22:48:26


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

 



RSS Aktualny czas: 6.10.2025 - 02:53