![]() |
![]() |
![]()
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ę:
Aby ją wywołać, zamierzając zmienić np. tylko jeden domyślny parametr timeout, musimy przebrnąć przez wszystkie parametry:
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ć:
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ć. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 52 Dołączył: 3.02.2013 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Konstruktor nie służy do ustawiania nie wiadomo jakiej konfiguracji klasy.
Konstruktor powinien przyjmować tylko parametry, które są niezbędne do utworzenia obiektu danej klasy. Całą resztę można rozwiązać za pomocą setterów, getterów, właściwości (jeżeli ustawiania mają być elastyczne) lub stałe klasy (jeżeli ustawienia klasy są sztywne) Jeżeli istnieje coś co musi zostać podane zawsze przy tworzeniu obiektu (aby klasa mogła prawidłowo funkcjonować), to wtedy powinno to stać się parametrem konstruktora. Po to, aby w każdej innej metodzie nie sprawdzać czy ktoś za pomocą settera to ustawił i nie rzucać mu wyjątku. Jeżeli twoja klasa staje się rozbudowana i ilość setterów / getterów cię przerasta można pomyśleć o osobnej klasie konfiguracyjnej dla danej klasy. Tak jak przykładowo robi to HTML Purifier Przykładowo:
Ten post edytował mstraczkowski 13.02.2013, 12:45:51 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 10:24 |