Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Special Arguments v1.0
Forum PHP.pl > Forum > Przedszkole
ber32
Chciałem wam przedstawić dość ciekawą klasę, z mojego punktu widzenia, która może rozwiązać problem przekazywania argumentów poprzez konstruktor. Jeżeli nie jesteśmy pewni ile tych argumentów będziemy potrzebować, a nie chcemy ingerować za każdym razem w samom klasę, to rozwiązanie na pewno się przyda.

Special Arguments v1.0

http://www.phpclasses.org/browse/file/49642.html

Co o klasie sądzicie.
nospor
Ja sadze, ze musze sie wpierw zalogowac by pobrac stamtad klase.... nie mozna po ludzku jej wrzucic gdzies by bez problemow ją zobaczyc?
Damonsson
Jest taka długa, że nie wiem czy się zmieści wink.gif, ale spróbuję:

  1. class special_arguments{
  2. public $person;
  3.  
  4. public function __construct(){
  5. $arg = func_num_args();
  6. for($i=0; $i<= count($arg); $i++){
  7. $tabarg=array();
  8. $tabarg[] = func_get_args($i);
  9. }
  10. return $this->person = $tabarg;
  11. }
  12.  
  13. public function car(){
  14. return $this->person;
  15. }
  16. }
nospor
To naprawde ta "klasa" questionmark.gif
1) Tu nie ma co oceniac ani nic czego sie nie wie.... rownie dobrze mogles napisac, ze 2+2 = 4 i jest to bardzo ciekawe
2) Przeciez tu jest dostosowane do jakiegos konkretnego twoje celu (person, car) i ma sie nijak do ogolnego korzystania..

1+2 = 3 przenosze

ps: no i jeszcze blad ba bledzie.... w ogole nie zajrzales do manuala co zwracaja funkcje func_get_args() and func_num_args() oraz czy w ogole przyjmuja jakies argumenty :/
przenosze na przedszkole
!*!
Cytat
Jeżeli nie jesteśmy pewni ile tych argumentów będziemy potrzebować


Jak to nie jesteśmy pewni? Projektujesz klasy na chybił-trafił? Jaki jest tego cel?
phpion
Jakoś to działa, ale czy tak jak oczekiwałeś?

1. Konstruktor nie powinien niczego zwracać.
2. Przy każdym przebiegu pętli for zerujesz $tabarg.
3. To co napisali poprzednicy: brak umiejętności korzystania z func_*_args(), brak jakiegokolwiek sensownego zastosowania.
ber32
Cytat
Jak to nie jesteśmy pewni? Projektujesz klasy na chybił-trafił? Jaki jest tego cel?


Potrzebujesz na stronie wywołać np. samochód z 5 osobami w środku a na drugiej z 20, bo to mini bus.
To po co zmieniać za każdym razem konstruktor w klasie jak można użyć takiego rozwiązania. To tylko przykład.

Szkoda że takie rozwiązania są przenoszone na przeczkole, ale ok, zapamiętam

Cytat
Konstruktor nie powinien niczego zwracać.


Dzięki nie zauważyłem tego returna w konstruktorze
phpion
Cytat(ber32 @ 11.12.2013, 13:20:44 ) *
Potrzebujesz na stronie wywołać np. samochód z 5 osobami w środku a na drugiej z 20, bo to mini bus.
To po co zmieniać za każdym razem konstruktor w klasie jak można użyć takiego rozwiązania. To tylko przykład.

Konstruktor przyjmuje tablicę pasażerów - po sprawie. Co jeśli chciałbym w konstruktorze przekazać pasażerów i np. informację o aktualnym poziomie paliwa? Mam zrobić:
  1. new special_arguments('mietek', 'heniek', 50);

?

Cytat(ber32 @ 11.12.2013, 13:20:44 ) *
Szkoda że takie rozwiązania są przenoszone na przeczkole, ale ok, zapamiętam

Jaki urażony smile.gif To, że Twoim zdaniem jest to przydatny gadżet nie oznacza, że tak faktycznie jest.
nospor
Cytat
Szkoda że takie rozwiązania są przenoszone na przeczkole, ale ok, zapamiętam
No ty raczysz zartowac.... czytales w ogole co napisano?? Przeciez tu jest cala masa bledow to raz, a dwa, ze to nie jest nic ciekawego, a ogolne znany fakt, z ktorego notabene nie umiesz korzystac. Dziala ci tylko i wylacznie fuksem...
usb2.0
Cytat
Dzięki nie zauważyłem tego returna w konstruktorze

no tyle linijek ze mozna bylo pominac biggrin.gif
ber32
Cytat
Konstruktor przyjmuje tablicę pasażerów - po sprawie. Co jeśli chciałbym w konstruktorze przekazać pasażerów i np. informację o aktualnym poziomie paliwa? Mam zrobić:

new special_arguments('mietek', 'heniek', 50);


Robisz kontyner i z niego przekazujesz do odpowiednich metod
phpion
Pokaż proszę na jakimś konkretnym przykładzie, bo może po prostu nie łapiemy o co chodzi. Jakie masz dane wejściowe, jaki kod PHP i co masz na wyjściu.
ber32
Cytat
Pokaż proszę na jakimś konkretnym przykładzie, bo może po prostu nie łapiemy o co chodzi.


ha ha oneeyedsmiley02.png
freemp3
Cytat(ber32 @ 11.12.2013, 14:50:54 ) *
ha ha oneeyedsmiley02.png


Faktycznie fascynujący przykład.

Chyba wiem, co chciałeś osiągnąć, ale jest na to lepszy sposób. Zamiast używać func_*_args lepiej zastosować tablice, w której będziesz przekazywał parametry, a kluczami będą nazwy tych parametrów. W konstruktorze tylko sprawdzasz czy istnieje dany parametr w tablicy, jaką ma wartość i w zależności od tego podejmujesz odpowiednią akcje. Tyle. Nie ma sensu kombinować.

Jeśli chodzi Ci natomiast o zastosowanie nieokreślonej liczby parametrów jak np przy var_dump, to raczej rzadko się to stosuje bo są lepsze i wygodniejsze metody. Oczywiście, są sytuacje gdzie nie ma wyjścia i trzeba użyć func_*_args, ale jak wspomniałem wcześniej są one rzadkością.
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.