Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Special Arguments v1.0
ber32
post
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


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.
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ja sadze, ze musze sie wpierw zalogowac by pobrac stamtad klase.... nie mozna po ludzku jej wrzucic gdzies by bez problemow ją zobaczyc?
Go to the top of the page
+Quote Post
Damonsson
post
Post #3





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Jest taka długa, że nie wiem czy się zmieści (IMG:style_emoticons/default/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. }
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To naprawde ta "klasa" (IMG:style_emoticons/default/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
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
!*!
post
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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?
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
ber32
post
Post #7





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


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

Ten post edytował ber32 11.12.2013, 13:26:15
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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 (IMG:style_emoticons/default/smile.gif) To, że Twoim zdaniem jest to przydatny gadżet nie oznacza, że tak faktycznie jest.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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...
Go to the top of the page
+Quote Post
usb2.0
post
Post #10





Grupa: Zarejestrowani
Postów: 341
Pomógł: 25
Dołączył: 28.09.2008
Skąd: Lublin

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


Cytat
Dzięki nie zauważyłem tego returna w konstruktorze

no tyle linijek ze mozna bylo pominac (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
ber32
post
Post #11





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


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
Go to the top of the page
+Quote Post
phpion
post
Post #12





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
ber32
post
Post #13





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


Cytat
Pokaż proszę na jakimś konkretnym przykładzie, bo może po prostu nie łapiemy o co chodzi.


ha ha (IMG:style_emoticons/default/oneeyedsmiley02.png)
Go to the top of the page
+Quote Post
freemp3
post
Post #14





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Cytat(ber32 @ 11.12.2013, 14:50:54 ) *


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ą.
Go to the top of the page
+Quote Post

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: 15.09.2025 - 04:38